-2

以下に示すように、2つのクラスを作成し、1つのクラスのオブジェクトを他のクラスで宣言しましたが、クラスが正規代入演算子を宣言する必要があり、コピーコンストラクターが必要であるという警告が表示されます。

class Base {
public:
    int value;
    virtual int getData() { retun 0; };
}

class test {
public:
    int data;
}

class B : public Base {
    test *var;
}

この警告を修正するにはどうすればよいですか?

4

1 に答える 1

0

これは基本的なC++です。クラスにポインターを置くときはいつでも、そのクラスには明示的なコピーコンストラクターと代入演算子が必要です。

そうしない、クラスとそのコピーがすべて同じオブジェクトを削除しようとする状況に陥ります。または、一部のコピーは、しばらく前に削除されたオブジェクトを指しています。

オブジェクトの存続期間とrawポインターを使用してトリッキーなことをしている場合は、とにかくコピーコンストラクターを宣言し、何が起こっているかを説明するコメントを記述します。

于 2013-02-19T15:38:58.830 に答える