У меня есть следующее определение класса:REFERENCING удалены функции при использовании 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>
членами в определении дает мне attempting to reference deleted function
ошибку на конструкторе InterpolatedSpreadConnector
копирования. Как ни странно, ошибка исчезает, если я заменю unique_ptr
на shared_ptr
.
Может ли кто-нибудь объяснить, почему это происходит?
'unique' означает, что он не может быть скопирован или назначен. Но лучше поставите [mcve]. – juanchopanza
Прочтите это: http://en.cppreference.com/w/cpp/language/copy_initialization – Nim
Я думал, что есть что-то вроде копирования elision (?), Который автоматически пропускал построение копии и предполагал нормальную конструкцию в таких случаях , –