Так как правило, имеющиеКак проверить, расширяет ли один класс C++ другой (например, если это другой интерфейс)?
class A { ... };
class B { ... };
class C: public A, public B {}; // C inherits from A and B.
, когда мы создаем экземпляр C и хотите передать его в какую-нибудь функцию хо мы проверить, если класс мы переходим к функции Расширение?
Я побежал 'сопзЬ C * с = dynamic_cast (& а) 'но это дало мне ошибку: не может dynamic_cast 'и a' (типа 'class A *') для ввода 'const class C *' (тип источника не является полиморфным)' –
Barney
@BarneyHsiao: я обновил ответ, чтобы объяснить, почему вы получите эту ошибку. В двух словах, базовый класс должен иметь по крайней мере один виртуальный метод (это может быть деструктор), если вы хотите использовать 'dynamic_cast <>' на нем. – ereOn