0

可能重复:
dynamic_cast 中的类型必须是指向完整类类型的指针或引用,或 void *

我有一个命名空间 Fuzzy,它有一个名为 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 *

任何指向我在这里做错了什么的指针?

4

2 回答 2

1

看起来您没有在定义CuteDog实现的地方包含头文件

于 2012-11-02T18:55:55.693 回答
1

以防有人被标题引导到这里。这是如何从不同的名称空间转发声明一个类(抽象或非抽象):

namespace different {
  class SomeClass;
}
于 2012-11-02T19:46:17.707 回答