2012-02-09 116 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上找到示例代碼也許我錯過了一些東西。

請幫助...新手Boost庫用戶

//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

採用指針來Tstd::shared_ptr<T>構造函數是explicit,即你不能隱式轉換到這種類型。此外,錯誤消息似乎不符合代碼。然而,試試這個:

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

...或

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

謝謝主席先生。通過查看我之前查看的示例代碼有點困難,找出了我所缺少的 – badboy11 2012-02-09 06:20:07

相關問題