当我使用dynamic_cast时会出错?

时间:2011-02-24 13:14:00

标签: c++ linux

当我使用dynamic_cast()时,会出现以下错误:

  

错误:' dynamic_cast'未在此范围内声明

提前感谢!

3 个答案:

答案 0 :(得分:7)

语法如下

dynamic_cast<TargetType>(SourceObject)

在你提供的错误消息中,有一个拼写错误(dyanmic vs dynamic)

答案 1 :(得分:1)

dynamic_cast仅适用于多态类。因此,如果您正在使用的类不是多态的,则会产生编译错误。

多态类是一个具有至少一个虚函数的类,甚至是析构函数!

在此示例中使用dynamic_cast的语法:

struct A { virtual ~A(){} };
struct B : A { };

B b;
A *pA = &b; //no cast needed here!
B *pB = dynamic_cast<B*>(pA); // dynamic cast is needed here!

答案 2 :(得分:0)

语法为dynamic_cast<Foo*>(BarObj);,因此不会将其作为函数调用。