错误 2664 - 无法从 std::vector<...> 转换为 std::tr1::shared_ptr
Error 2664 - Can't convert from std::vector<...> to 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 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>());
相关文章:
- 将无符号char*转换为std::istream*C++
- 将 int 数组转换为 std::vector<int*>
- 如何将这个std::字符串转换为std::基本字符串
- 哪些类型可以转换为std::any
- 如何在对<char>C++程序进行逆向工程的同时将 std::basic_string 转换为 Rust 可读值?
- 转换函数,将 std::数组的双精度作为参数或双精度作为参数单独转换
- 将函数参数"const char*"转换为"std::string_view"是
- 错误 C2679:二进制"<<":未找到采用类型 'std::string_view' 的右侧操作数的运算符(或者没有可接受的转换)
- 字符转换功能 std::isupper() & std::islower() C++17
- 将函数包装器转换为 std::function
- 如何将 std::ifstream 转换为 std::basic_istream<CharT, Traits>&?
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- 如何将唯一指针的 std::vector 转换为原始指针的 std::span?
- std::转换move构造函数的模板专业化的变体
- STD ::转换如何用特定值初始化函子
- 对C++字符串使用 std 转换
- 等价于元组的std::转换
- std::转换为任意容器
- std::转换顺序保证
- std::转换产生奇怪的输出