개체에 대한 포인터가있는 벡터의 전체 복사본이 필요하지만 개체는 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