【发布时间】:2012-11-02 18:43:38
【问题描述】:
可能重复:
The type in a dynamic_cast must be a pointer or reference to a complete class type, or void *
我有一个命名空间 Fuzzy,它有一个名为 CuteDog 的抽象类(继承自另一个抽象类)。
我正在编写一个名为 PuppyArmy 的新类
我想在 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...,因为我的编译器认为<:是三合字母/有向图的开头。 -
一旦我修复了您的转录错误,它works fine 就为我服务。我想也许你没有告诉我们什么。请发布一个简短、完整的程序来演示您的错误。 SSCCE.ORG
标签: c++ inheritance namespaces forward-declaration