需要有关我无法弄清楚的错误消息的帮助。我得到以下内容:
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
答案 0 :(得分:1)
std::shared_ptr<T>
指向T
的构造函数为explicit
,即您无法隐式转换为此类型。此外,错误消息似乎与代码不匹配。但是,试试这个:
boxes.push_back(std::shared_ptr<Box2D>(new Box2D()));
......或
boxes.push_back(std::make_shared<Box2D>());