-3

c++ でのオブジェクトのスライスに関する問題を解決するにはどうすればよいですか?

私のアプリケーションでは、派生オブジェクトclassに動的に割り当てられたポインターがあり、派生classオブジェクトがベースclassオブジェクトに割り当てられている場合、動作はメモリ破損です!

4

2 に答える 2

1

それはあなたのデザインに依存します。削除するには、特定の設計基準を変更する必要がある場合があります。オプションの 1 つは、特定の派生operator =のベースにオーバーロードされたコピー コンストラクターを持つことです。classclass

class Derived;
class Base
{
//...
private:
  Base (const Derived&);
  Base& operator = (const Derived&);  // private and unimplemented
};

次のようなことをしようとすると:

Derived d;
Base b;
b = d; // compiler error

コンパイラ エラーが発生します。

于 2011-07-28T12:27:50.390 に答える
0

you can't. you should solve the problem with the pointer. if you want to assign Obj2 to Obj1, override assign operator (operator=)

于 2011-07-28T12:25:49.360 に答える