オブジェクトへのポインタを持つベクターのディープコピーを作成したいですが、オブジェクトはCまたはBのいずれかです。私はそれを説明する方法を混乱させることを知って、私に説明させてください。オブジェクトへのポインタのベクトル、ベクトルの深いコピーが必要ですが、オブジェクトは継承されたオブジェクトのベースです
class A {
A(const A& copyme) { }
void UnableToInstantiateMeBecauseOf() =0;
};
class B {
B(const B& copyme) : A(copyme) {}
};
class C {
C(const C& copyme) : A(copyme) {}
};
std::vector<A*>* CreateDeepCopy(std::vector<A*>& list)
{
std::vector<A*>* outList = new std::vector<A*>();
for (std::vector<A*>::iterator it = list.begin(); it != list.end(); ++it)
{
A* current = *it;
// I want an copy of A, but it really is either an B or an C
A* copy = magic with current;
outList->push_back(copy);
}
return outList;
}
どのように継承したタイプではないオブジェクトのコピーを作成するには?
ここでコピーコンストラクタは実際には適切ではありません。通常は、多態性クラスまたは値クラスのいずれかを選択します。 –
私のワークスペースにあなたのクローンを送ることができますか?ありがとう;) – Stormenet