私はこの問題に頻繁に遭遇しており、ムーブ コンストラクターが適切であると考えていますが、コピー コンストラクターが問題であり、それを非表示にするとうまくいかないようです。
コード:
template <class T>
class LinkedList{
public:
//
LinkedList() {}
LinkedList(const T &data);
LinkedList(const T &data, const LinkedList &node);
LinkedList(const LinkedList &object);
LinkedList &operator=(const LinkedList &object);
~LinkedList() {}
std::shared_ptr<LinkedList> push_back(const T& data);
private:
T data;
std::unique_ptr<LinkedList> link;
std::unique_ptr<LinkedList> LinkFactory(const LinkedList &node);
std::shared_ptr<LinkedList> CreateStartNode(const T &data);
std::shared_ptr<LinkedList> CreateNode(const T &data, const LinkedList &node);
};
エラーが発生している特定の行は次のとおりです。
LinkedList<T>::LinkedList(const LinkedList<T> &object) : data(object.data),
link(std::move(object.link)) {}
コピー コンストラクター内のリンクをコピーするのではなく移動しようとしていますが、役に立ちません。ムーブ コンストラクターが合成ではなく設計されている場合、そのほうがよいでしょうか?