1

C++ でオブジェクトをコピーしたい。問題は、以下の疑似コードに示すように、ポリモーフィズムを持つ派生クラスがあることです。

class BaseCl { some virtual functions };
class DerivedClass : public BaseCl { ... };

...

BaseCl * b1 = new DerivedClass();
BaseCl * b2 = new "copy of b1"; (just pseudocode)

問題は最後の行です。

クラス「BaseCl」のオブジェクトをコピーしたいのですが、ポリモーフィズムのため、コピーは「DerivedClass」の元のオブジェクトとまったく同じでなければなりません。

それを行う最善の方法は何ですか?

どうもありがとうございました。

編集:問題は解決しました:

挿入:

virtual BaseCl *clone() = 0;

基本クラスで

DerivedCl *clone() {return new DerivedCl(*this);}

派生クラスで。皆さん、ありがとうございました。

4

2 に答える 2

0

ランタイム ポリモーフィズムの鍵は、最も派生したオブジェクトで操作を実装する必要があることです。すべてのベースは、ベース ポインターによって呼び出される仮想関数を公開する必要があります。

基本レベルで仮想BaseCl* clone()関数を定義し、それを派生クラスでオーバーライドして、return new DerivedClass(*this)

于 2012-09-25T07:33:58.120 に答える