提问人:jyostna chintala 提问时间:12/21/2020 最后编辑:einpoklumjyostna chintala 更新时间:12/23/2020 访问量:76
具有唯一指针向量的对象向量
Vector of Objects that have vector of unique pointers
问:
我有一个对象的向量 ex:TestStructVec 用于 ex:TestStruct,其中 object 包含唯一指针的向量 ex:uptrVec。
struct TestClass {};
struct TestStruct
{
std::vector<std::unique_ptr<TestClass> > uptrVec;
}
std::vector<TestStruct> TestStructVec;
TestStruct ts1;
ts1.uptrVec.emplace_back(std::make_unique<TestClass>());
现在,当将此对象放回向量时,仅在 vs2013 , c++11 中,它因尝试引用已删除的函数而失败(假设它存在一些复制常量问题)。我
TestStructVec.emplace_back(std::move(ts1));
请让我知道我做错了什么。
注意:在 VS2015 和 Vs2017 中,它编译良好,没有观察到错误。
任何建议都是值得赞赏的。谢谢。
答:
0赞
Monsieur AZERTY
12/23/2020
#1
std::make_unique 仅适用于 C++14 及以后
你可以在这里看到它:https://en.cppreference.com/w/cpp/memory/unique_ptr
在非成员函数> make_unique >版本(绿色)部分:
评论
0赞
jyostna chintala
12/24/2020
谢谢你。但是使用 new 也会失败并出现同样的问题。
评论