错误 2664 - 无法从 std::vector<...> 转换为 std::tr1::shared_ptr

Error 2664 - Can't convert from std::vector<...> to std::tr1::shared_ptr

本文关键字:std 转换 tr1 shared ptr gt 2664 vector lt 错误      更新时间:2023-10-16

需要帮助处理我无法理解的错误消息。我得到以下信息:

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 2010projectsc++test001main.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

std::shared_ptr<T>的构造函数采用指向T的指针,即explicit,即不能隐式转换为此类型。此外,错误消息似乎与代码不匹配。但是,试试这个:

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

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