Лучший способ передать несколько дочерних классов в C++
Предположим, у нас есть базовый класс Base
class Base{
virtual double GetNumber();
}
и несколько дочерних классов (назовем их "A", "B" и "C"), которые выглядят как
class A : public Base{
double GetNumber(){return 1;};
}
Теперь у меня есть другой класс, который должен получить дочерний класс через функцию. Это выглядит так:
class Caller(){
Base* b;
void SetB(Base* b){this->b = b;};
}
Я только передаю указатель, чтобы предотвратить нарезку объектов. Однако откуда я хочу вызвать функцию, это выглядит так:
std::vector<Caller> cVec; //multiple Caller object in here
for (std::vector<Caller>::iterator it = cVec.begin(); it != cVec.end(); ++it){
A child;
//Some manipulation of child
cVec.SetB(&child);
}
Указатель решает проблему среза объекта, однако я не хочу, чтобы все объекты Caller указывали на одного и того же потомка. Я мог бы решить эту проблему, создав еще один вектор с несколькими экземплярами дочерних классов, но мне интересно, есть ли лучший способ сделать это?
Редактировать 1: дочерний объект должен создаваться только в цикле for и управляться объектом Caller.
1 ответ
Спасибо за комментарии! Решение было так просто, как просто:
std::vector<Caller> cVec; //multiple Caller object in here
for (std::vector<Caller>::iterator it = cVec.begin(); it != cVec.end(); ++it){
cVec.SetB(new A(p1, p2...));
}
В объектах Caller я потом обрабатываю удаление позже.