Массив базового абстрактного класса, содержащий дочерний класс в C ++

так что у меня топ класс, скажем так

//Top.h
#pragma once
#include 
using std::string;

class Top
{
    protected:
        string name;
    public:
        virtual string GetName() = 0;
}

Этот класс выигралне может быть никакого объекта Top, например,почемуабстрактный класс. У меня тоже два средних класса, скажем так:

//MiddleA.h
#pragma once
#include "Top.h"

class MiddleA : public Top
{
    protected:
        int value;
    public:
        MiddleA(string, int);
        string GetName();
        int GetValue();
}

//MiddleB.h
class MiddleB : public Top
{
    protected:
        double factorial;
    public:
        MiddleB(string, double);
        string GetName();
        double GetFactorial();
        double Calculate(int);
}

Теперь мне нужен массив или что-нибудь, что может содержать несколько объектов типа MiddleA, MiddleB или любых классов, которые наследуются от этих двух классов. Есть ли способ сделать это в C ++?

РЕДАКТИРОВАТЬ : Будет ли это "приемлемый" добавить конструктор по умолчанию в защищенном разделе и использовать вектор или массив из Top?

Ответы на вопрос(2)

Ваш ответ на вопрос