可能重复:
The type in a dynamic_cast must be a pointer or reference to a complete class type, or void *
我有一个模糊名称空间,它有一个名为CuteDog的抽象类(继承自另一个抽象类)。
我正在写一个名为PuppyArmy的新课程
我想在PuppyArmy中有一个指向CuteDog的指针,在我的头文件中我正在尝试这个。
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 :(得分:1)
看起来您没有包含定义CuteDog
实现
答案 1 :(得分:0)
如果某人在标题中处于领先地位。这是如何从不同的名称空间转发声明类(抽象或不抽象):
namespace different {
class SomeClass;
}