Можно создать дубликат:
The type in a dynamic_cast must be a pointer or reference to a complete class type, or 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 *
Любые указатели на то, что я делаю неправильно здесь?
Попробуйте изменить 'dynamic_cast <:: Fuzzy..' в' dynamic_cast <:: Fuzzy ... ', потому что мой компилятор считает, что '<:' является началом триграфа/орграфа. – 0x499602D2
Как только я исправил ошибки транскрипции, он [отлично работает] (http://ideone.com/qP50mX) для меня. Я думаю, вы, может быть, не сказали нам что-то. Пожалуйста, отправьте короткую полную программу, демонстрирующую вашу ошибку. http://SSCCE.ORG/ –