【发布时间】:2014-12-05 21:00:44
【问题描述】:
我正在创建一个类——我们称之为Container——它基本上只包含一个std::vector 和一些决定如何选择向量值的特殊逻辑。我想添加一种方法,通过一次调用向我的类添加多个值。这是我添加一项的方法:
void LoopGenerator::add(RandomStripe &stripe)
{
stripes.push_back(new SingleStripe(stripe));
}
我想要一个类似的方法,可以这样调用:
LoopGenerator gen = LoopGenerator();
gen.add(RandomStripe(), RandomStripe(), RandomStripe() ... and as much as you want ... );
并将所有参数添加到内部std::vector。
这可能只使用标准库,还是最好没有它们?
【问题讨论】:
-
传统的 va_args 需要某种方式来知道传递了多少参数。或者,您可以使用可变参数模板(如果有)。
-
@Tomáš Zato RandomStripe 和 SingleStripe 是什么?它们是不同的类型吗?
-
@VladfromMoscow 是的,它们是不同的。实际上,
SingleStripe只是存在,所以RandomStripe可以与数组以及其他条带生成类一起使用...SingleStripe派生自与LoopGenerator相同的类。
标签: c++ vector overloading