У меня есть несколько классов, у каждого из которых есть идентификатор, и идентификатор передается классу в качестве параметра шаблона:
typedef class1<1> baseClass;
typedef class2<2> baseClass;
typedef class<100> baseClass;
Теперь мне нужна карта, чтобы я мог связать 1 с Class1 и2 с Class2 и т. Д.
Как я могу создать такой вектор?Я работаю над библиотекой только для заголовков, поэтому это должно быть определение только для заголовков.
Я ищу то, что делает то же самое, что и этот код (если кто-то может его скомпилировать!):
std::map<int,Type> getMap()
{
std::map<int,Type> output;
output.add(1,class1);
output.add(2,class2);
output.add(100,class100);
}
Идея состоит в том, что когда я получаю в качестве ввода 1, я создаю class1, а когда я получаю 2, я создаю class2.
Любое предложение очень ценится.
с использованиемэти данные, то я могу написать такую функцию:
void consume(class1 c)
{
// do something interesting with c
}
void consume(class2 c)
{
// do something interesting with c
}
void consume(class3 c)
{
// do something interesting with c
}
void consume(int id,void * buffer)
{
auto map=getMap();
auto data= new map[id](buffer); // assuming that this line create a class based on map, so the map provide the type that it should be created and then this line create that class and pass buffer to it.
consume(data);
}