私のコードには、関数プロトタイプがあります
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はスマートポインターです。
私のメイン関数では、タイプref_ptrとref_ptrの2つのスマートポインターを定義し、それらを関数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)エラー3エラーLNK1120:1未解決の外部