10

我希望有人能理解为什么下面的代码会失败。我正在尝试从 osg::Node* 节点对象获取 PositionAttitudeTransform (Openscenegraph 类)的实例。但是下面以粗体显示编译器错误。

 void CameraPosCallbackUpdate::operator()(osg::Node* node, osg::NodeVisitor* nv)
{ 
   // other code goes here

    osg::PositionAttitudeTransform* pat = dynamic_cast<osg::PositionAttitudeTransform*> (node);

}

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

请帮助我以正确的方式访问我的对象,我希望能帮助我理解这里的问题,因为我相信演员应该是可能的。

等级制度 http://www.openscenegraph.org/documentation/OpenSceneGraphReferenceDocs/a00529.html

4

1 回答 1

14

我相信您必须拥有#include包含class osg::PositionAttitudeTransform.
dynamic_cast当目标类的主体不可见时给出这样的错误。

这是g++ 中重现的类似错误。

于 2012-10-30T06:15:07.180 回答