c++ - dynamic_cast 中的类型必须是指向完整类类型的指针或引用,或者 void *

标签 c++ openscenegraph

我希望有人能理解为什么下面的代码会失败。我正在尝试从 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 *

请帮助我以正确的方式访问我的对象,我将不胜感激帮助理解这里的问题是什么,因为我相信类型转换应该是可能的。

Hierarchy http://www.openscenegraph.org/documentation/OpenSceneGraphReferenceDocs/a00529.html

最佳答案

我相信您必须#include 包含class osg::PositionAttitudeTransform 主体的头文件。
当目标类的主体不可见时,dynamic_cast 会给出此类错误。

这里是类似的error reproduced in g++ .

关于c++ - dynamic_cast 中的类型必须是指向完整类类型的指针或引用,或者 void *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13133407/

相关文章:

c++ - 关于对象的复制

c++ - 图像在 OSG 中随着旋转而消失

openscenegraph - 如何捕获图像以在 OSG 中进行后期处理

c++ - 使用 OpenSceneGraph 创建和导出球体

c++ - 使用来自 OSG Cookbook 的绘图实例渲染点云数据不起作用

c++ - 如何在 Linux 中从动态库(libsample.so)生成导入库(libsample.a)

C++ 代码生成和模板特化

c++ - 项目中共享模型的多线程同步

c++ - 有人可以解释 "using"的含义吗?