Вопросы по теме '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 просмотров
schedule
28.11.2022
Есть ли предложения по выполнению произвольной операции с использованием заданных аргументов произвольных типов?
В основном я просто хочу выполнить произвольную операцию, используя заданные аргументы произвольных типов.
Базовым классом типа аргумента является Var, а Operation - базовым классом операции, которая будет выполняться для заданных аргументов.
У...
361 просмотров
schedule
19.03.2022
Реальный пример 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 просмотров
schedule
03.01.2024
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 просмотров
schedule
11.08.2023
Статическое приведение — невозможно приведение через виртуальное наследование
Я читал о статических и динамических приведениях, а также о различиях между ними. В нем говорится, что
static_cast не может выполнять приведение через виртуальное наследование, в отличие от динамического приведения.
Я был бы признателен,...
368 просмотров
schedule
30.05.2022
Рассмотрение конструкции C++ dynamic_cast также проверки указателя или ссылочного типа
Когда мы делаем динамическое приведение:
A* x = ...;
B* b = dynamic_cast<B*>(x);
dynamic_cast вернет действительный указатель только в том случае, если:
A является полиморфным, иначе компиляция завершится ошибкой.
B эквивалентен...
294 просмотров
schedule
28.07.2023
С++, что может сделать type_info::hash_code различающимся для двух (предположительно) одинаковых объектов
После попытки отладить неудачное динамическое преобразование вниз, я в конце концов обнаружил, что причина, вероятно, заключается в следующем: type_info::hash_code для типа, к которому он приводится, отличается в зависимости от того, где в коде он...
253 просмотров
schedule
28.08.2022
Динамическая проверка отливки из пустоты*
Скажем, у меня есть void* , содержащий указатель на неизвестный class . Я хочу использовать dynamic_cast для проверки во время выполнения типа класса, который у меня есть. Например:
class Foo {};
void* bar = new Foo;
Если я попытаюсь...
1541 просмотров
schedule
07.07.2023
ссылка на 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 просмотров
schedule
02.08.2022