как говорится в комментарии, вы можете сделать что-то вроде этого.
class Object{
public:
virtual ~Object()= default;
virtual void foo() = 0;
};
class Pane: public Object{
public:
~Pane() = default;
void foo() override{
std::cout << "Hello Pane" << std::endl;
}
};
class Triangle: public Object{
public:
~Triangle() = default;
void foo() override{
std::cout << "Hello Triangle" << std::endl;
}
};
int main(){
std::vector<std::unique_ptr<Object>> objects;
objects.emplace_back(std::make_unique<Triangle>());
objects.emplace_back(std::make_unique<Pane>());
for(auto &object: objects){
object->foo();
}
return 0;
}
Просто создайте вектор объектов-указателей. Обратите внимание, что вам не нужно использовать unique_pointers
, но я настоятельно рекомендую это сделать, потому что вам не нужно удалять объекты в конце.
Вывод этой простой программы:
Hello Triangle
Hello Pane