我想写一个像这样的C ++模板:
template <class Type1, class Type2, class Type3,....>
class MyClass
{
//...
};
但是,“类型数量”是可变的。
例如,用户可以创建一个包含3种类型的对象:
MyClass<int, int, int> obj;
或者他可以用5种类型创建一个对象:
MyClass<int, int, int, int, int> obj;
换句话说,我想要用户:
1.表示字段数量
2.根据字段数设置类型。
我怎么能这样做?
提前致谢。
答案 0 :(得分:7)
提一下,你可以在当前的C ++中解决这个问题。例如,您可以查看Boost::tuple
:
#include <boost/tuple/tuple.hpp>
int main()
{
boost::tuple<int, double> tuple1(4, 2.0);
boost::tuple<int, double, double> tuple2(16, 4.0, 2.0);
}
您无法为元组分配变量数量的类型,boost::tuple
最多只允许10种类型。我认为litb在之前的回答中展示了如何做到这一点,但我找不到它。
答案 1 :(得分:4)
我想你应该看一下亚历山大夫斯库的书Modern C++ Design。关于类型列表的第3章似乎非常接近你想要的。
答案 2 :(得分:0)
据我所知,目前唯一的解决方案是为每个案例编写一个单独的模板。在某些情况下,您可能可以使用枚举来键入地图或类型列表,但我们需要首先了解您要对类型执行的操作。
答案 3 :(得分:0)
你所做的就是你写这个模板,以便它需要足够多的参数,但是给所有参数赋予默认参数。然后使用模板元编程来筛选参数并清除默认参数。
接受Neils的建议并购买MC ++ D.这就是我们大多数人学习这种技术的方式。