【发布时间】:2014-11-23 12:20:05
【问题描述】:
我对 std::list of unique_ptr's 有一个奇怪的问题。
slFlyingMonster 类派生自 slMonster 类。
以下代码有效:
std::unique_ptr<slMonster> ptr(new slFlyingMonster(md));
但是这段代码:
std::list<std::unique_ptr<slMonster>> mMonsters;
mMonsters.push_back(new slFlyingMonster(md));
抛出错误:
"错误 1 错误 C2664: 'void
std::list>,std::allocator>>>::push_back(const std::unique_ptr<_ty>> &)':无法转换 来自 'slFlyingMonster *' 的参数 1 到 'std::unique_ptr> &&'"
虽然我理解,有些地方是错误的,例如 std::list.push_back() 与 = 不同,但我无法弄清楚如何正确地将新类作为 unique_ptr 添加到列表中。任何建议都会非常受欢迎。
【问题讨论】:
标签: c++ c++11 stl unique-ptr