Форвард объявить абстрактный класс из другого пространства имен

Возможный дубликат:
Тип в 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 *

Любые указатели на то, что я делаю здесь не так?

0

Решение

Похоже, вы не включили заголовочный файл, где вы определяете CuteDog реализация

1

Другие решения

В случае, если кто-то ведет здесь по названию. Вот как переслать объявление класса (абстрактного или нет) из другого пространства имен:

namespace different {
class SomeClass;
}
0

По вопросам рекламы [email protected]