我想存储这样的结构
template <typename var_type> struct
{
int some_var;
//...some antoher vars
var_type problem_var;
};
在矢量或类似矢量的东西,我该怎么做?我无法使用模板内容创建矢量
答案 0 :(得分:5)
如果您事先知道类型列表,boost::variant<>
可能比boost::any
更合适。在您的情况下,您可能需要
typedef boost:variant<
mystruct<float>,
mystruct<int>
mystruct<std::string>
> my_variant;
这将只允许这3种类型。或者,您可能需要表面上相似的mystruct<boost:variant<float, int, std::string> >
。我无法从你的问题中判断哪一个最适合你的问题。
答案 1 :(得分:1)
您可以使用Boost.Any之类的内容。
答案 2 :(得分:0)
您不能创建一个类层次结构,其中包含您需要存储的对象类型,并在插入向量时始终向上转换为基类吗?
缺点是,当从向量中提取项目或使用基类接口(可能是getter方法)时,您始终必须知道要向下转换的类型。