Вопросы по теме 'dynamic-cast'

Доступ к членам подкласса из указателя суперкласса C++
У меня есть массив пользовательских объектов класса Student. И CourseStudent, и ResearchStudent наследуются от Student, и все экземпляры Student являются одним из них. У меня есть функция для просмотра массива, определения подтипа каждого...
16682 просмотров

C++ dynamic_cast — полиморфное требование и понижение
В следующем коде при создании obj в случае 1 мы также создаем объект класса derived , но его функции-члены просто недоступны для obj . Таким образом, при понижении (т.е. в случае 2), используя obj в качестве источника, мы уже имеем в нем...
17065 просмотров
schedule 19.04.2022

Каков правильный вариант использования dynamic_cast?
Мне много раз говорили (и сам видел на практике), что использование dynamic_cast часто означает плохой дизайн, потому что его можно и нужно заменить виртуальными функциями. Например, рассмотрим следующий код: class Base{...}; class...
6461 просмотров
schedule 01.07.2022

С++ сопоставление уникальных классов и извлечение подклассов из значения
Новый программист C++ здесь. У меня есть следующее определение карты: typedef std::map<std::string, Option> MapType; MapType my_map Option — это уникальный класс, который я создал. На самом деле я никогда не добавляю класс Option в...
629 просмотров
schedule 12.04.2023

Почему вызов виртуальной функции быстрее, чем dynamic_cast?
Я написал простой пример, который оценивает среднее время вызова виртуальной функции, используя интерфейс базового класса и dynamic_cast и вызов не виртуальной функции. Вот: #include <iostream> #include <numeric> #include...
6629 просмотров
schedule 16.06.2023

ошибка: не может dynamic_cast (цель не является указателем или ссылкой)
Я изучаю обработку исключений на С++ и сталкиваюсь с проблемой. Вот код: #include<iostream> #include<exception> using namespace std; class A { public: virtual void f(void){} }; class AA:public A { public: void aa(void){};...
25199 просмотров
schedule 22.09.2023

Отказ от dynamic_cast в дизайне графического интерфейса
Я разрабатываю графический интерфейс, и у меня возникла проблема, потому что я не могу избежать динамического_кастинга. Мои занятия: class Widget; //base class for all widgets class Container //contains widgets {...
290 просмотров
schedule 13.09.2022

Как выполнить dynamic_cast с уникальным_ptr?
У меня есть иерархия классов следующим образом: class BaseSession : public boost::enable_shared_from_this<BaseSession> class DerivedSessionA : public BaseSession class DerivedSessionB : public BaseSession В функциях производного класса...
38692 просмотров

цепочка методов метод производного класса после вызова метода базового класса
С классом и производным, как показано ниже, есть ли способ для методов базовых классов возвращать ссылку на объект производного типа вместо его собственного типа, чтобы синтаксически я мог связать методы вместе? Предположим, что объект A имеет...
373 просмотров
schedule 02.09.2023

Сделать этот код правильно полиморфным
У меня есть абстрактный класс Parent, который имеет несколько дочерних элементов и пустые функции для взаимодействия с каждым из этих дочерних элементов. Каждый Дочерний элемент переопределяет функции Родителя и по-разному взаимодействует с другими...
89 просмотров
schedule 05.07.2022

Указатель базового класса C++ dynamic_cast на указатель производного класса
Я пытаюсь создать очень простой язык программирования, который позволяет кому-то играть в боевой корабль для школьного проекта на Flex/Bison. Чтобы хранить мои переменные, у меня есть карта с именем symbol_table, которая принимает строку в качестве...
668 просмотров

Понижающее приведение с использованием dynamic_cast возвращает null
Я пытаюсь преобразовать объект базового класса в объект производного класса с помощью dynamic_cast , но dynamic_cast возвращает значение null. Можно ли понизить с помощью dynamic_cast ? struct A { virtual ~A() {} }; struct B : A {}; int...
8304 просмотров
schedule 27.04.2022

Совместимость с Dynamic_cast?
Я читал о dynamic_cast, а затем наткнулся на следующее утверждение ( от cplusplus.com ): Примечание о совместимости: для этого типа dynamic_cast требуется информация о типе времени выполнения (RTTI) для отслеживания динамических типов....
1559 просмотров
schedule 07.02.2023

Как можно выполнить dynamic_cast из std::exception в std::nested_exception?
Я только что видел код, содержащий dynamic_cast от std::exception до std::nested_exception , например, try { std::throw_with_nested(std::runtime_error("error")); } catch (std::exception &e) { auto &nested =...
549 просмотров

Проверки динамического приведения во время выполнения
dynamic_cast <new type> (exp) Я читал в документации, что если новый тип является указателем/ссылкой на производный, а выражение является указателем/ссылкой на базу, то динамическим приведением выполняется только проверка во время...
113 просмотров
schedule 28.02.2023

С++ Динамическое приведение, не полиморфно?
Когда я запускаю следующий код: #include <iostream> class Shape{ public: }; class Square:public Shape { public: }; class Circle:public Shape { double r; public: void SetRadious(double r) { std::cout << "R value:"...
60 просмотров

Как правильно использовать основные рекомендации C++: C.146: используйте dynamic_cast, когда навигация по иерархии классов неизбежна.
Мотивация Основные рекомендации C++ рекомендуют использовать dynamic_cast , когда навигация по иерархии классов неизбежна. Это приводит к тому, что clang-tidy выдает следующую ошибку: Do not use static_cast to downcast from a base to a derived...
391 просмотров

Уточнение спецификации (правила) динамического приведения
У нас есть общая форма dynamic_cast: dynamic_cast ‹ новый тип › ( выражение ) Меня особенно смущает выделенная жирным шрифтом часть этого правила (5а): 5: Если выражение является указателем или ссылкой на полиморфный тип Base, а new-type...
81 просмотров
schedule 03.08.2023