ここに問題があります。次のような派生オブジェクトで満たされた抽象基本クラスへのポインターのベクトルがあります。
class AbstractBase { /* ... */ };
clase Derived1 : public AbstractBase {
Derived1() { }
Derived1( const AbstractBase& abc ) { /* ... */ }
};
/* ... */
vector< AbstratcBase* > lThingies;
const AbstractBase& getThingie(int pos) {
return *lThingies[pos];
}
要素のコピーを取得するには、次のように派生クラスの「コピー コンストラクター」を使用します。
Derived1 d1 = getThingie(2);
しかし、問題は私がこれを好きではないということです: クラス「built42」を構築するときに、この「コピー コンストラクター」の実装を強制する方法はありません。再帰呼び出し、私に起こりました)。
私の質問は次のとおり です。これを行うためのより良い方法はありますか? どうやって?
更新:
私が探しているソリューションの「書かれていない」要件の 1 つは、派生オブジェクトのコピーをローカル変数として取得することです。そのため、削除することを忘れません。
詳細情報:
多数のlThingiesがあり、実行時に含まれる派生オブジェクト (派生 1、派生 2 など) が何であるかを知ることができますが、コンパイル時にはわかりません。