Forward从不同的名称空间声明一个抽象类

时间:2012-11-02 18:43:38

标签: c++ inheritance namespaces forward-declaration

  

可能重复:
  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 *

指出我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

看起来您没有包含定义CuteDog实现

的头文件

答案 1 :(得分:0)

如果某人在标题中处于领先地位。这是如何从不同的名称空间转发声明类(抽象或不抽象):

namespace different {
  class SomeClass;
}