C 11 での一意のポインターを持つクラスのコピー
排他的所有権を強制するスマート ポインターである unique_ptr を含むクラスのコピー コンストラクターの作成、独特の課題をもたらします。 C 11 では、 unique_ptr メンバーの管理には慎重な考慮が必要です。
解決策:
コピー コンストラクターを実装するには、2 つのオプションがあります:
class A { std::unique_ptr<int> up_; public: A(int i) : up_(new int(i)) {} A(const A& a) : up_(new int(*a.up_)) {} };
std::shared_ptr<int> sp = std::make_shared<int>(*up_);
追加考慮事項:
A(A&& a) : up_(std::move(a.up_)) {}
A& operator=(const A& a) { up_.reset(new int(*a.up_)); return *this; } A& operator=(A&& a) { up_ = std::move(a.up_); return *this; }
以上が「unique_ptr」メンバーを含む C 11 クラスを適切にコピーするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。