我正在尝试遵循 Herb Sutter 的 C++ 指南,在这种情况下,我更喜欢unique_ptr原始指针和shared_ptr. 支持的论据之一std::unique_ptr是可兑换为shared_ptr是在某些时候需要
vector在我的情况下,我有一个unique_ptr我需要传递给一个需要一个vector的方法shared_ptr。我希望能够写出类似的东西:
for (auto &uniquePtr : vectorUnique)
vectorShared.push_back(make_shared<Abstract>(move(uniquePtr));
这给我Xcode 7.1配置了基于工具链的以下错误C++11:
错误:字段类型“抽象”是一个抽象类。
当Abstract我使用make_shared. 这似乎使萨特先生的建议在很多情况下都行不通,所以我确定我一定做错了什么!我求助于写作:
for (auto &uniquePtr : vectorUnique) {
auto ptr = uniquePtr.get();
auto shared = shared_ptr<Abstract>(ptr);
vectorShared.push_back(shared);
uniquePtr.release();
}
有一个更好的方法吗?