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