是否可以以某种方式使用类名作为容器中的键?
我想存储从同一基继承的类的对象。
struct storage {};
struct storagetransform : public storage
{
vec3 position, rotation;
};
struct storageform : public storage
{
unsigned int vertex, texture;
};
我有一个嵌套 map 。 ...
应填充特定的类名称,例如 storagetransform
或 storageform
作为类型或字符串或其他内容。
unordered_map<..., unordered_map<int, storage*> > list;
我想像下面这样访问容器的对象。
list[storagetransform](1337);
这有可能吗?另外有没有更好的方法来解决这个问题?
最佳答案
如果您确实接受像这样访问您的列表:
list[ type_index ( typeid(classname) ) ]
您可以使用 std::type_index 将您的类映射到可索引(可在 std::map 等中使用)对象,并且您可以按如下方式声明您的 std::map
std::map< std::type_index , ... > list;
据我所知,这需要一个符合新 C++ 标准的编译器。
关于c++ - 以类名作为键的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13900469/