我有一个ex:TestStruct对象的向量ex:TestStructVec,其中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中,它编译得很好,并且没有观察到错误。
任何建议都是值得感谢的。谢谢。
发布于 2020-12-23 12:22:27
仅在c++14及更高版本中提供std::make_unique
你可以在这里看到:https://en.cppreference.com/w/cpp/memory/unique_ptr
在非成员函数> make_unique >版本(绿色)一节中:
https://stackoverflow.com/questions/65395551
复制相似问题