を削除するには、私持って次のセットアップ:コールは、暗黙的にコピーコンストラクタ
class MyClass {
public:
static MyClass Clone(const MyClass& other) {
return MyClass(other, 10);
}
static MyClass CreateNormal(int x, int y) {
return MyClass(int x, int y);
}
// There are a few more factory functions.
private:
// Constructor 1
MyClass(int x, int y) : b_(x, y) {}
// Constructor 2
MyClass(const MyClass& other, int c) : b_(other.b_, c) {}
// And a lot more constructors.
// NotMyClass has its copy constructor deleted.
NotMyClass b_;
}
int main() {
MyClass A(1,2);
MyClass B = MyClass::Clone(A); // ERROR
}
NotMyClass
を変更することなく、これを回避する方法はありますか? コピーコンストラクタMyClass
が暗黙的に削除されたため、エラーが発生します。これを解決するために私はstd :: Move()を使う方法がありますか?
実際のクラスには多くのコンストラクタがあり、わかりやすくするためにファクトリ関数が必要なため、ファクトリ関数を削除することはできません。
どのC++標準が利用可能ですか? – HeroicKatora
NotMyClassに移動コンストラクタがありますか? – tweej
コピーできないオブジェクトを複製したい場合は、 'NotMyClass'自体に' clone() 'メソッドがあることを願ってください。さもなければあなたはそのデザインを打破しようとしています。このコピー不可能なものをコピーしてもよろしいですか?あなたはそれへの参照を保持したくないですか? –