Можете ли вы создать std :: map унаследованных классов?

Мне интересно, можно ли создать карту указателей унаследованных классов. Вот пример того, что я пытаюсь сделать:

#include <string>
#include <map>

using namespace std;

class BaseClass
{
    string s;
};

class Derived1 : public BaseClass
{
    int i;
};

class Derived2 : public Derived1
{
    float f;
};

// Here's what I was trying, but isn't working
template<class myClass>
map<string, myClass>m;

int main()
{
    // Add BaseClasses, Derived1's, and/or Derived2's to m here
    return 0;
}

Я получаю следующие ошибки:

main.cpp(23): error C2133: 'm' : unknown size
main.cpp(23): error C2998: 'std::map<std::string,myClass>m' : cannot be a template definition

Я понимаю, почему я получаю эту ошибку, но мне интересно, возможно ли создать карту, которая может содержать различные уровни унаследованных классов? Если нет, то возможно ли создать какую-то систему управления, которая может содержать различные типы классов? Или мне придется делать разные карты / векторы / массивы / и т.д. для каждого типа класса?

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

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