【发布时间】:2015-09-03 17:36:57
【问题描述】:
我有一个使用 PImpl Ideom 实现的类:
class FooImpl {};
class Foo
{
unique_ptr<FooImpl> myImpl;
public:
Foo();
~Foo();
};
现在我想把它放到一个 std::vector 中
void Bar()
{
vector<Foo> testVec;
testVec.resize(10);
}
但是当我这样做时,我得到一个编译器错误 (VC++ 2013)
错误 C2280: 'std::unique_ptr>::unique_ptr(const std::unique_ptr<_ty>> &)' : 试图引用已删除的函数
testVec.emplace_back(); 和 testVec.push_back(std::move(Foo())); 出现同样的错误
(作为一种解决方法,使用vector<unique_ptr<Foo>> 似乎可行,但我不明白为什么上面的代码不起作用。)
【问题讨论】:
标签: c++ class c++11 smart-pointers