Описание тега dynamic-cast
Преобразование dynamic_cast позволяет безопасно преобразовывать указатели (и ссылки) в классы вверх, вниз и в стороны в иерархии наследования.
2
ответа
Цепочка методов метод производного класса после вызова метода базового класса
С классом и производной, как показано ниже, есть ли способ для методов базовых классов возвращать ссылку на объект производного типа вместо его собственного типа, так что синтаксически я могу связать методы вместе? Предположим, что объект A имеет ме…
01 дек '14 в 04:21
3
ответа
C++ дизайн запрос
Я проектирую фреймворк на С ++, который должен обеспечивать базовую функциональность и действовать как интерфейс для других производных систем. #include <stdio.h> class Module { public: virtual void print() { printf("Inside print of Module\n")…
03 янв '12 в 10:06
1
ответ
Сбой dynamic_cast при приведении из базового в дочерний класс
У меня есть структура struct foo : public std::map<std::string, int> { }; и дочерняя структура; struct bar : public foo { int another_member; } Но я не могу использовать bar* b = dynamic_cast<bar*>(f) где f указатель на foo. Даже если я …
09 июн '15 в 13:41
3
ответа
dynamic_cast COM-объекта в COM-интерфейс не влияет на счетчик ссылок, не так ли?
Если у меня есть класс C++, X, который реализует интерфейсы COM IY и IZ, и у меня есть указатель y на интерфейс IY объекта типа X, и я делаю это: IZ *z = dynamic_cast<IZ *> ( y ); Это не влияет на счетчик ссылок объекта, не так ли? Мне не нужн…
22 сен '09 в 15:31
3
ответа
dynamic_cast сомнение в C++/Stroustrup: преобразование в защищенный базовый класс
Я знаю, что следующий код дает ошибку компиляции: class A{ public : virtual void name(){cout<<typeid(this).name()<<endl;}; }; class B:protected A{public : virtual void name(){cout<<typeid(this).name()<<endl;};}; void foo(B* b…
26 авг '11 в 20:36
1
ответ
isMemberOfClass против сравнения классов с ==
Есть ли реальная разница между: id value; BOOL compare1 = [value isMemberOfClass:[SomeClass class]]; BOOL compare2 = [value class] == [SomeClass class]; проверить, если value это SomeClass объект?
27 июн '10 в 05:26
2
ответа
Приведение указателя в C++ при передаче указателя в качестве параметра для ссылки
Мне любопытно, это: bool State::operator<(const State* S) { return this->operator<(*dynamic_cast<const State *>(S)); } точно так же как: bool State::operator<(const State* S) { return this->operator<(*(S)); } Для справки this…
12 июл '11 в 17:04
1
ответ
dynamic_cast дает сбой моей программе
В моей программе у меня есть базовый класс (ship) и четыре производных класса (pirate, mercantile, repairing, exploring) и в функции члена repairing Я хочу знать, если объект, на который указывает ship * имеет тип pirate для того, чтобы иметь возмож…
07 янв '15 в 03:00
2
ответа
Является ли в C++ "открытый тип int без знака" в базовом классе более быстрой альтернативой dynamic_cast?
В C++ медленная "dynamic_cast" является известным фактом. Я подумал о следующем простом способе узнать тип объекта в иерархии. Может кто-нибудь объяснить, может ли это быть медленнее, чем dynamic_cast? А если нет, то почему это не является обычной п…
25 сен '18 в 13:55
5
ответов
Как я должен различать подклассы
У меня есть класс токенов, который выглядит примерно так: class Token { public: typedef enum { STRTOK, INTTOK } Type; virtual bool IsA(Type) = 0; } class IntTok : public Token { int data; public: bool IsA(Type t) { return (t == INTTOK); } int GetDat…
22 фев '09 в 18:41
4
ответа
Когда требуется dynamic_cast?
Возможный дубликат: динамическая трансляция в с ++ В чем разница между этими двумя способами присвоения производного класса указателю базового класса? Derived d1; Base *b1 = &d1 Derived d2; Base *b2 = dynamic_cast<Base*> &d2
28 июл '11 в 10:08
2
ответа
Динамическое приведение объектов из массива объектов к соответствующим классам, доступным в перечислении
public class A { private String property; public String getProperty() { return property; } } public class B { private String property; public String getProperty() { return property; } } аналогично определяются классы C и D.(Опуская другую логику и с…
08 май '18 в 13:55
2
ответа
C++: динамическое приведение из одного базового шаблона в другой класс
Учитывая приведенную ниже структуру классов, я хочу вызвать метод в struct C<O> из метода в struct B, C<O> следует следует любопытно повторяющегося шаблона. Я хочу сделать это без размещения методов в struct O, Методы размещения в struct…
11 дек '17 в 22:04
10
ответов
Как я могу избежать dynamic_cast в моем коде C++?
Допустим, у меня есть следующая структура класса: class Car; class FooCar : public Car; class BarCar : public Car; class Engine; class FooEngine : public Engine; class BarEngine : public Engine; Давайте также дать Car ручка к его Engine, FooCar буде…
19 янв '09 в 22:47
3
ответа
Ожидаемое первичное выражение до * C++
Я не могу понять ошибку в следующем коде #include <iostream> #include <vector> using namespace std; class Spell { private: string scrollName; public: Spell(): scrollName("") { } Spell(string name): scrollName(name) { } virtual ~Spell() {…
12 июн '16 в 15:00
1
ответ
Может быть как upcast, так и downcast как с помощью dynamic_cast в C++
Я проходил через концепцию dynamic_cast в C++. Допустим, у нас есть class Base и 2 производных класса class D1 а также class D2 которые получены из Base Класс Base имеет виртуальную функцию fun(),Мои вопросы:1. Можно ли сделать upcast и downcast в d…
12 фев '15 в 10:22
1
ответ
Ошибка сегментации при использовании dynamic_pointer_cast
Следующий фрагмент кода является MWE проблемы, с которой я сталкиваюсь std::dynamic_pointer_cast: #include <iostream> #include <memory> class foo { private: int x; public: foo() : x(0) {} foo(int xx) : x(xx) {} virtual ~foo() = default; …
28 май '18 в 01:20
0
ответов
C++, что может сделать type_info::hash_code разным для двух (предположительно) одинаковых объектов
После попытки отладки неудачного динамического даункадинга я в конечном итоге обнаружил, что причина, вероятно, заключается в следующем: type_info::hash_code для типа, к которому он приводится, не совпадает в зависимости от того, где в коде он вызыв…
10 июн '15 в 22:43
1
ответ
dynamic_cast возвращает NULL, но не должен
У меня следующая иерархия классов: class IStorage { [...] } Q_DECLARE_INTERFACE(IStorage, "ch.gorrion.smssender.IStorage/1.0") class ISQLiteStorage: public IStorage { Q_INTERFACES(IStorage) [...] } Q_DECLARE_INTERFACE(ISQLiteStorage, "ch.gorrion.sms…
27 дек '09 в 00:21
4
ответа
Ошибка: невозможно dynamic_cast ... (цель не указатель или ссылка)
Я изучаю обработку исключений в C++ и столкнулся с проблемой. Вот код: #include<iostream> #include<exception> using namespace std; class A { public: virtual void f(void){} }; class AA:public A { public: void aa(void){}; }; int main(void)…
16 июн '13 в 02:48