【发布时间】:2017-02-16 23:20:44
【问题描述】:
我有以下类定义:
class InterpolatedSpreadConnector
{
public:
~InterpolatedSpreadConnector() = default;
GPUImage* operator()() override;
GPUImage* AncestorReducedConnectivity = nullptr;
GPUImage* OffspringReducedConnectivity = nullptr;
};
,当在声明 auto connector = InterpolatedSpreadConnector(); 中使用时,它工作得很好。但是,我想将这些原始指针更改为 unique_ptrs。
在定义中包含memory 并用std::unique_ptr<GPUImage> 成员替换原始指针会给我InterpolatedSpreadConnector 复制构造函数上的attempting to reference deleted function 错误。奇怪的是,如果我将 unique_ptr 替换为 shared_ptr,错误就会消失。
谁能解释为什么会这样?
【问题讨论】:
-
unique表示不可复制或不可分配。但最好发一个minimal reproducible example。 -
我认为有类似复制省略 (?) 的东西会自动跳过复制构造并在此类情况下假定正常构造。
标签: c++ c++11 unique-ptr