gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 08:10:36 27 4
gpt4 key购买 nike

需要有关我无法弄清楚的错误消息的帮助。我得到以下信息:

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

最佳答案

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

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

...或者

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

关于c++ - 错误 2664 - 无法从 std::vector<...> 转换为 std::tr1::shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9206098/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com