【问题标题】:Map with Classname as Key以类名为键的映射
【发布时间】:2012-12-16 10:40:00
【问题描述】:

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

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

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);

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

【问题讨论】:

    标签: c++ class stl key typename


    【解决方案1】:

    如果您同意像这样访问您的列表:

    list[ type_index ( typeid(classname) ) ]
    

    您可以使用 std::type_index 将您的类映射到可索引的(可用于 std::map 等)对象,您可以按如下方式声明您的 std::map

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-12
      • 2011-06-17
      • 1970-01-01
      • 2016-12-13
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      相关资源
      最近更新 更多