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

dynamic_cast терпит неудачу
У меня есть базовый класс и производный класс. У каждого класса есть файл .h и файл .cpp. Я делаю dynamic_cast объекта базового класса в производный класс в следующем коде: ч файлы: class Base { public: Base(); virtual ~Base();...
11718 просмотров
schedule 24.02.2023

C++: безопасный способ привести целое число к указателю
Мне нужно преобразовать целочисленный тип, который содержит адрес, в фактический тип указателя. Я мог бы использовать reinterpret_cast следующим образом: MyClass *mc1 = reinterpret_cast<MyClass*>(the_integer); Однако это не выполняет...
1459 просмотров

Есть ли предложения по выполнению произвольной операции с использованием заданных аргументов произвольных типов?
В основном я просто хочу выполнить произвольную операцию, используя заданные аргументы произвольных типов. Базовым классом типа аргумента является Var, а Operation - базовым классом операции, которая будет выполняться для заданных аргументов. У...
361 просмотров

Реальный пример dynamic_cast на C ++
Может ли кто-нибудь дать мне реальный пример случая, когда требуется dynamic_cast и его вообще нельзя обойти? Примеры, которые я могу придумать, обычно можно обойти с помощью двойной отправки. Если ограничение слишком сильное, неплохо было бы...
4168 просмотров
schedule 22.03.2023

Вариативные шаблоны и динамическое приведение
У меня есть кусок кода C++ следующим образом: template <typename ...A> struct CastAll{ template <typename ...B> void cast_all(void(*fun)(B...), A...as){ //... } }; Что я хотел бы сделать, так это реализовать cast_all...
1905 просмотров
schedule 27.05.2022

Отказ от dynamic_cast для приведения к исходному типу
Как я могу безопасно приводить (т.е. возвращать null в случае сбоя) к точному типу базового объекта, не подвергаясь штрафу за производительность dynamic_cast и не добавляя код поддержки в каждый используемый класс?
885 просмотров
schedule 03.02.2023

Известное решение, позволяющее избежать медлительности dynamic_cast?
Мне нужен был полиморфизм во время выполнения, поэтому я использовал dynamic_cast . Но теперь у меня были две проблемы: dynamic_cast был крайне медленным ! (Прокрутите вниз для эталона.) Короче говоря, я решил проблему таким образом, используя...
403 просмотров
schedule 16.09.2022

dynamic_cast против предоставления виртуальных функций в родительском классе (C++)
У меня есть родительский класс «база» и другой класс «производный», который наследуется от «базы». "Производный" имеет 1 метод cH1. если я сделаю это: base* b = new derived(); И я хочу иметь возможность сделать это: b->cH1();...
476 просмотров
schedule 28.07.2023

использование dynamic_cast для идентификации типа среды выполнения
при чтении Essential c++ главы 5.10 Идентификация типа во время выполнения я столкнулся с проблемой. Позвольте мне сначала представить небольшую предысторию. Есть базовый класс с именем num_sequence и класс Fibonacci , производный от...
584 просмотров
schedule 11.08.2022

Проверка RTTI
У меня есть следующие классы и методы: //Base class class Node { public: virtual ~Node() {}; Node() {}; private: // Private things for my implementation. }; class Element : public Node { public: //...
244 просмотров
schedule 18.09.2022

QSharedPointer dynamicCast и objectCast не работают в Ubuntu
Я использую Qt 5.0.1 под Ubuntu 10.04, и в моем приложении мне нужно использовать QSharedPointer вместе с соответствующими преобразованиями dynamic_cast (object_cast) во время выполнения. Эти преобразования вызываются в общем объекте, который...
604 просмотров
schedule 23.10.2023

Должен ли я изменить свой дизайн, чтобы предотвратить динамическое приведение типов?
Я прочитал несколько тем о динамических приведениях в С++, и все они полны людей, утверждающих, что это указывает на плохой дизайн. В других языках я никогда особо не задумывался при проверке типа объекта. Я никогда не использую его как альтернативу...
1156 просмотров
schedule 13.09.2022

Фабричные методы в производных классах
У меня есть два типа сообщений: MessageA и MessageB , оба производные от абстрактного класса IMessage , содержащего чистый виртуальный метод std::string toString() . Поэтому я могу преобразовать каждое сообщение в его строковое представление с...
706 просмотров

Dynamic_cast с неоднозначным целевым классом
Я как раз читал новую книгу Страуструпа. В главе 22.2.2 он обсуждает проблему dynamic_cast. Код, который я написал, чтобы проверить это сам, выглядит следующим образом: class Storable { public: int i; virtual void r() {};...
234 просмотров
schedule 03.08.2023

Избегайте dynamic_cast при передаче базового класса в качестве параметра виртуальной функции.
Я не мог найти однозначного ответа на этот простой, но важный случай. (Буду признателен, если кто-нибудь направит меня к ответу). Допустим, у меня есть два вида наследования: класс A, который является базовым классом класса B, и класс C, который...
262 просмотров

Статическое приведение — невозможно приведение через виртуальное наследование
Я читал о статических и динамических приведениях, а также о различиях между ними. В нем говорится, что static_cast не может выполнять приведение через виртуальное наследование, в отличие от динамического приведения. Я был бы признателен,...
368 просмотров
schedule 30.05.2022

Рассмотрение конструкции C++ dynamic_cast также проверки указателя или ссылочного типа
Когда мы делаем динамическое приведение: A* x = ...; B* b = dynamic_cast<B*>(x); dynamic_cast вернет действительный указатель только в том случае, если: A является полиморфным, иначе компиляция завершится ошибкой. B эквивалентен...
294 просмотров

С++, что может сделать type_info::hash_code различающимся для двух (предположительно) одинаковых объектов
После попытки отладить неудачное динамическое преобразование вниз, я в конце концов обнаружил, что причина, вероятно, заключается в следующем: type_info::hash_code для типа, к которому он приводится, отличается в зависимости от того, где в коде он...
253 просмотров
schedule 28.08.2022

Динамическая проверка отливки из пустоты*
Скажем, у меня есть void* , содержащий указатель на неизвестный class . Я хочу использовать dynamic_cast для проверки во время выполнения типа класса, который у меня есть. Например: class Foo {}; void* bar = new Foo; Если я попытаюсь...
1541 просмотров

ссылка на dynamic_cast и rvalue
class A{ public: virtual ~A() {}; }; class B : public A{ }; int main(){ A&& p = B(); dynamic_cast<B&&>(std::move(p)); } Выдает ошибку (g++ 5.2.0): error: conversion to non-const reference type...
1377 просмотров