Array der abstrakten Basisklasse mit untergeordneten Klassen in C ++

So habe ich eine Top-Klasse, sagen wir:

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

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

Diese Klasse hat kein Objekt Top instantiate, deshalb ist es eine abstrakte Klasse. Ich habe auch zwei Mittelklasse, sagen wir:

//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);
}

Was ich jetzt brauche, ist ein Array oder etwas anderes, das mehrere Objekte vom Typ MiddleA, MiddleB oder beliebige Klassen enthalten kann, die von diesen beiden Klassen erben. Gibt es eine Möglichkeit, dies in C ++ zu tun?

EDIT: Wäre es "akzeptabel", einen Standardkonstruktor in den geschützten Abschnitt einzufügen und einen Vektor oder ein Array von Top zu verwenden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage