2012-02-09 35 views
0

に変換できません。私が把握できないエラーメッセージが表示されます。私は以下を取得しています:エラー2664 - std :: vector <...>をstd :: tr1 :: shared_ptr

Error 1 error C2664: 'void std::vector<_Ty>::push_back(_Ty &&)' : cannot convert parameter 1 from 'Physics::Box2D' to 'std::tr1::shared_ptr<_Ty> &&' d:\visual studio 2010\projects\c++\test001\main.cpp 31 1 Test001 

コードがうまくいかない理由はわかりません。私はStackOverFlow.comでサンプルコードを見つけました。たぶん私は何かを見逃しています。

助けてください...初心者ライブラリのユーザを後押し

//this code works fine... 
Box2D *b = new Box2D(); 
b->Info(); 

//but this code fails... 
vector< shared_ptr<Box2D> > boxes; 
boxes.push_back(new Box2D()); <--error happens here 

答えて

1

std::shared_ptr<T>Tへのポインタを取るためのコンストラクタはつまり、あなたが暗黙的にこのタイプに変換することはできません、explicitです。また、エラーメッセージがコードと一致していないようです。しかし、この方法を試してください。

boxes.push_back(std::shared_ptr<Box2D>(new Box2D())); 

...または

boxes.push_back(std::make_shared<Box2D>()); 
+0

あなたの先生をお願いします。私が以前見ていたサンプルコードを少し見れば、私が見逃していたものが分かりました – badboy11

関連する問題