【发布时间】:2013-01-07 04:42:21
【问题描述】:
我想在我的类中有一个指向对象的指针向量。为了避免为它创建析构函数,我想使用std::unique_ptr,因为对象是在我的类中创建/拥有/销毁的,但是我有一个我无法理解的编译器错误。下一个代码将作为我的问题的简短示例:
std::unique_ptr<int> createPtr(int value)
{
std::unique_ptr<int> ptr(new int(value));
return ptr;
};
int main()
{
std::vector<std::unique_ptr<int>> vec;
vec.push_back(createPtr(1));
std::unique_ptr<int> ptr = createPtr(2);
vec.push_back(ptr);//error C2248: 'std::unique_ptr<_Ty>::unique_ptr' : cannot access private member declared in class 'std::unique_ptr<_Ty>'
}
您能否解释一下为什么会出现此错误以及std::unique_ptr 的正确用法是什么?
【问题讨论】:
-
存储指向
int的指针而不是向量中的值有什么意义? -
如果您正在考虑使用
std::unique_ptr<>,那么您可能没有有一个“对象向量”,而是一个“指向对象的指针向量”。如果你有一个“对象向量”,那么销毁会自动正确发生。 -
@TadeuszKopec 请阅读问题
-
@Robᵩ 我会编辑问题,我想说的是指向对象的指针
标签: c++ c++11 vector unique-ptr