當引用刪除功能我有下面的類定義:使用的unique_ptr
class InterpolatedSpreadConnector
{
public:
~InterpolatedSpreadConnector() = default;
GPUImage* operator()() override;
GPUImage* AncestorReducedConnectivity = nullptr;
GPUImage* OffspringReducedConnectivity = nullptr;
};
,其中,在auto connector = InterpolatedSpreadConnector();
工作得很好聲明中使用時。但是,我想將這些原始指針更改爲unique_ptr
。
包括memory
並且用定義中的std::unique_ptr<GPUImage>
成員替換原始指針在InterpolatedSpreadConnector
拷貝構造函數中給我一個attempting to reference deleted function
錯誤。奇怪的是,如果我用shared_ptr
代替unique_ptr
,錯誤消失。
任何人都可以解釋爲什麼會發生這種情況?
「唯一」表示不可複製或分配。但更好的發佈[mcve]。 – juanchopanza
閱讀下面的內容:http://en.cppreference.com/w/cpp/language/copy_initialization – Nim
我以爲有些東西就像複製elision(?),它會自動跳過複製構造並在這些情況下假定爲正常構造。 –