Вопросы по теме 'downcast'

Приведение общего указателя к производному классу с дополнительной функциональностью - это безопасно?
Рассмотрим следующий план: class Base { /* ... */ }; class Derived : public Base { public: void AdditionalFunctionality(int i){ /* ... */ } }; typedef std::shared_ptr<Base> pBase; typedef std::shared_ptr<Derived> pDerived; int...
5243 просмотров
schedule 01.04.2024

Почему нельзя использовать static_cast для приведения вниз, когда задействовано виртуальное наследование?
Рассмотрим следующий код: struct Base {}; struct Derived : public virtual Base {}; void f() { Base* b = new Derived; Derived* d = static_cast<Derived*>(b); } Это запрещено стандартом ( [n3290: 5.2.9/2] ), поэтому код не...
18734 просмотров

некорректное поведение при понижении C++
Вот фрагмент кода, который я написал, чтобы увидеть поведение во время понижения. #include <iostream> using namespace std; class base { public : void function() { cout << "\nInside class Base"; } }; class derived...
201 просмотров
schedule 16.02.2024

Неужели это невозможно? У меня работает нормально
Я знаю, что уже есть вопросы, связанные с этой же темой, но я видел разные ответы, поэтому я не совсем понимаю, какой ответ правильный. В приведенной ниже ссылке люди упомянули, что понижающее преобразование невозможно. Производный тип По этой...
1712 просмотров
schedule 16.11.2022

Как я могу избежать понижения Java?
В настоящее время я работаю над проектом, в котором у меня есть 3 пользовательских класса, скажем, UserA, UserB, UserC, которые наследуются от абстрактного класса User. Предполагается, что программа эмулирует системное желание, требующее от...
134 просмотров
schedule 24.09.2022

Ошибка Swift при понижении значения «Любой»
Следующий код является почти точной копией из документации Apple и компилируется без ошибок: guard let firstItem = (rawItems! as? Array<Dictionary<String, Any>>)?.first else { throw AnError() } let identityRef =...
738 просмотров
schedule 10.02.2024

В С++ можно ли использовать CRTP с частной базой?
В C++ у меня есть много классов, не связанных наследованием, которые определяют метод std::string get_name() const . Есть несколько служебных функций, которые нужны многим классам и реализованы в терминах get_name(). Я бы хотел, чтобы классы,...
276 просмотров

Повторное использование кода, который должен выполняться для базового типа объекта с шаблонами в перегруженной виртуальной функции для производных типов объектов.
Контекст: Я получил следующую иерархию структур: Event -> MouseEvent -> MouseButtonEvent -> MouseWheelEvent -> ... -> KeyboardEvent -> KeyEvent...
29 просмотров
schedule 12.02.2024