假设我有一个名为generic_pair的类,其形式为:
template < typename K, typename V >
struct generic_pair{
K key;
V value;
};
现在,问题是我希望能够在STL容器中存储一堆这些generic_pair,但并非容器中的所有都是同一类型。例如,某些元素可能是,而另一些元素可能是等等。问题是我们该怎么做?
我的第一个想法是使用“标签”创建封装类型的层次结构,并使用通用类型声明容器,而使用继承类型声明实际元素。例如,
struct base_type{
typedef void type;
};
struct int_type: base_type{
typedef int type;
}
struct string_type: base_type{
typedef std::string type;
}
/// and so on establish a type hierarchy as necessary and then...
std::vector < generic_pair < base_type, base_type > > vec;
我敢打赌,有更好,更正确的方法吗?任何想法,方向表示赞赏。如果您在MPL或其他地方看到过类似的实现或相关的工具/技术,那也很有帮助。 (我试图避免宏)
最佳答案
如果类型集是预先确定的,则可以使用Boost.Variant。如果不是,那么Boost.Any可能会成功。
关于c++ - 在STL容器中存储属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4083024/