c++ でのオブジェクトのスライスに関する問題を解決するにはどうすればよいですか?
私のアプリケーションでは、派生オブジェクトclass
に動的に割り当てられたポインターがあり、派生class
オブジェクトがベースclass
オブジェクトに割り当てられている場合、動作はメモリ破損です!
c++ でのオブジェクトのスライスに関する問題を解決するにはどうすればよいですか?
私のアプリケーションでは、派生オブジェクトclass
に動的に割り当てられたポインターがあり、派生class
オブジェクトがベースclass
オブジェクトに割り当てられている場合、動作はメモリ破損です!
それはあなたのデザインに依存します。削除するには、特定の設計基準を変更する必要がある場合があります。オプションの 1 つは、特定の派生operator =
のベースにオーバーロードされたコピー コンストラクターを持つことです。class
class
class Derived;
class Base
{
//...
private:
Base (const Derived&);
Base& operator = (const Derived&); // private and unimplemented
};
次のようなことをしようとすると:
Derived d;
Base b;
b = d; // compiler error
コンパイラ エラーが発生します。
you can't. you should solve the problem with the pointer. if you want to assign Obj2 to Obj1, override assign operator (operator=)