2012-12-16 51 views
2

是否有可能以某種方式在容器中使用類名作爲關鍵字?以Classname爲關鍵字的映射

我想存儲從同一個基地繼承的類的對象。

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

它可能以某種方式?此外,是否有更好的方法解決這個問題?

回答

3

如果你接受訪問你這樣的名單:

list[ type_index (typeid(classname)) ] 

可以使用的std :: type_index到您的類映射到一個可轉位(中的std ::地圖使用等)對象和你可以聲明你的std :: map如下

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

據我所知,這需要一個符合新的C++標準的編譯器。