Возможный дубликат:
Тип в dynamic_cast должен быть указателем или ссылкой на полный тип класса или void *
У меня есть пространство имен Fuzzy, и у него есть абстрактный класс CuteDog (который наследуется от другого абстрактного класса).
Я пишу новый класс под названием PuppyArmy
Я хотел бы иметь указатель на CuteDog в PuppyArmy и в моем заголовочном файле я пытаюсь это.
namespace Fuzzy { class CuteDog }
using namespace Fuzzy;
class PuppyArmy {
...
CuteDog *cute;
}
тогда, когда в моем файле CPP у меня есть это
using namespace Tough;
....
cute = dynamic_cast<::Fuzzy::CuteDog*>(foo()); // where foo() returns the parent class of CuteDog*
Компилятор говорит мне
C2440: '=' : cannot convert from Fuzzy::CuteDog * to PuppyArmy::Fuzzy::CuteDog *
Любые указатели на то, что я делаю здесь не так?
Похоже, вы не включили заголовочный файл, где вы определяете CuteDog
реализация
В случае, если кто-то ведет здесь по названию. Вот как переслать объявление класса (абстрактного или нет) из другого пространства имен:
namespace different {
class SomeClass;
}