2

是否可以以某种方式使用类名作为容器中的键?

我想存储从同一基础继承的类的对象。

struct storage {};

struct storagetransform : public storage
{
    vec3 position, rotation;
};

struct storageform : public storage
{
    unsigned int vertex, texture;
};

我有一个嵌套地图。...应该填充特定的类名,例如类型storagetransformstorageform字符串等。

unordered_map<..., unordered_map<int, storage*> > list;

我想访问容器的对象,如下所示。

list[storagetransform](1337);

这可能以某种方式吗?此外,有没有更好的方法来解决这个问题?

4

1 回答 1

3

如果您确实接受这样访问您的列表:

list[ type_index ( typeid(classname) ) ]

您可以使用 std::type_index 将您的类映射到可索引(可在 std::map 等中使用)对象,并且您可以声明您的 std::map 如下

std::map< std::type_index , ... > list;

据我记得,这需要一个符合新 C++ 标准的编译器。

于 2012-12-16T10:59:49.687 回答