我有一个功能,C++矢量的默认参数<int>&?
void test(vector<int>& vec);
我如何设置VEC的默认参数? 我试图
void test(vector<int>& vec = vector<int>());
但有一个警告 “使用非标准扩展: '默认参数':转换,从 '的std ::矢量< _Ty>' 到 '的std ::矢量< _Ty> &'”
有没有更好的方法来做到这一点?取而代之的
void test() {
vector<int> dummy;
test(dummy);
}
问候, Voteforpedro
+1但我认为应该指出,'测试'通常不会线程安全的,因为它修改这个'DEFAULT_VECTOR'。这可能很乏味,但我强烈建议为这些需求编写两个函数(一个可以重用另一个函数):void test(){vector temp;试验(温度); } –
stinky472
2010-06-30 08:45:43
@ stinky472:谢谢,更新了我的答案。 – ereOn 2010-06-30 09:04:47
作为一个方面说明,如果你可以在后者上使用某种方法来返回对它自己的引用,例如获取对临时引用的一种方法。 '操作者='。因此,'无效测试(向量&vec =向量().operator =(向量()));'应该工作(临时生命在这里不受影响并且仍然足以处理呼叫)。但请不要这样做:) –
2010-06-30 14:59:01