VS2010
我有一个unique_ptr
内部结构。然后我有一个vector
这样的结构。如果我尝试调整向量的大小(或使用保留),我会收到编译错误。下面是一个仍然存在问题的精简示例。
struct Test
{
unique_ptr<int> pValue;
};
void test()
{
// this doesn't compile
vector<Test> testVector;
testVector.resize(5);
// this also doesn't compile
testVector.reserve(5);
// this, of course, compiles
vector<unique_ptr<int>> testVector2;
testVector2.resize(5);
testVector2.reserve(5);
}
unique_ptr
我得到的错误是关于访问(赋值运算符)的私有成员的抱怨。编译器正在尝试动态构造Test &Test::operator =(const Test &)
和Test::Test(const Test &)
。我不明白为什么调整大小操作需要调用这些函数中的任何一个(如果需要,它为什么不直接调用默认构造函数?)。它们都存在问题,因为unique_ptr
由于const
.