Я пытаюсь сделать копию производного класса только с указателем базового класса.
Так что, если у меня есть:
class BaseClass; //Abstract class with =0 functions
class LeftClass : BaseClass;
class RightClass : BaseClass;
И у меня есть функция, которая принимает BaseClass как параметр:
void Function(BaseClass* baseClass)
Я хочу сделать копию BaseClass, но я также хочу скопировать расширенную функциональность LeftClass ИЛИ RightClass, но я не знаю, какой один был передан функции - оба возможны.
Итак, у меня есть что-то вроде этого:
//global
vector<BaseClass*> myVector;
void Function(BaseClass* baseClass)
{
BaseClass* baseClassCopy = new BaseClass(baseClass);
myVector.push_back(baseClassCopy);
}
И затем я вызываю функцию с левым или правым классом
int main()
{
LeftClass leftClass;
Function(&leftClass);
LeftClass* ResultOfCopy = myVector.at(0);
}
Этот код не копирует весь левый класс как копию, есть ли способ сделать это, я пропускаю?
Также BaseClass
является абстрактным, некоторые функции =0
так что я не могу новый. В противном случае в других классах есть функция копирования.