是否有可能以某种方式使用类名作为容器中的键?
我想存储从同一个基础继承的类的对象。
struct storage {};
struct storagetransform : public storage
{
vec3 position, rotation;
};
struct storageform : public storage
{
unsigned int vertex, texture;
};
我有一个嵌套的地图。 ...
应填充特定的类名称,例如storagetransform
或storageform
作为类型或字符串或其他。
unordered_map<..., unordered_map<int, storage*> > list;
我想访问容器的对象,如下所示。
list[storagetransform](1337);
这可能以某种方式?此外,还有更好的解决方案吗?
答案 0 :(得分:3)
如果您确实接受以下列表访问您的列表:
list[ type_index ( typeid(classname) ) ]
你可以使用std :: type_index将你的类映射到一个可索引的(在std :: map等中可用)对象,你可以按如下方式声明你的std :: map
std::map< std::type_index , ... > list;
据我所知,这需要一个符合新C ++标准的编译器。