在我的代码中,我有函数原型
void AddBenchNode(ref_ptr<Group> root ,ref_ptr<Node> benches, bool setAttitude = false, float scale_x =.15, float scale_y =15, float scale_z = 15, int position_x = 250, int position_y = 100, int position_z =0 );
其中 ref_ptr 是一个智能指针。
在我的主函数中,我定义了 2 个 ref_ptr 和 ref_ptr 类型的智能指针,并将它们传递给对我的函数 AddBenchNode 的调用。
ref_ptr<Group> root = new Group();
ref_ptr<Node> benches = readNodeFile("Models/test.ive");
AddBenchNode(root, benches, true);
当调用执行时,什么也没有发生。因为没有对根指针进行任何更改。我想知道的是我是否正确地拨打了这个电话?或者我是否必须重新定义我的函数以获取指向这些智能指针的指针?
现在我确实尝试通过引用传递
void AddBenchNode(osg::ref_ptr<osg::Group>& root ,osg::ref_ptr<osg::Node>& benches, bool setAttitude = false, float scale_x =.15, float scale_y =15, float scale_z = 15, int position_x = 250, int position_y = 100, int position_z =0 );
这导致了一些链接器错误。
错误 2 错误 LNK2001: 无法解析的外部符号 "void __cdecl AddBenchNode(class osg::ref_ptr &,class osg::ref_ptr &,bool,float,float,float,int,int,int)" (?AddBenchNode@@YAXAAV?$ ref_ptr@VGroup@osg@@@osg@@AAV?$ref_ptr@VNode@osg@@@2@_NMMMHHH@Z) Error 3 error LNK1120: 1 unresolved externals