[英]Parameters assignment with default values for a function
我有线程生成函数,它接受许多在声明中具有默认值的参数。
int spawn(funcptr func,void arg = 0,int grp_id = 1,const char threadname);
我想初始化第一个参数func和最后一个参数线程名称和剩余变量分配它们的默认值。
spawn(myfunc,“My Thread”);
我怎样才能做到这一点。
你不能。
其他语言支持spawn(myfunc, , , "MyThread")
,但不支持C ++。
相反,只是根据自己的喜好重载它:
inline int spawn( funcptr func, const char*threadname) {
return spawn(func, 0, 1, threadname);
}
其他答案是技术上是正确的,但有可能做到这一点,利用Boost.Parameter库。 它需要相当多的设置,并且可能或可能不值得你。
从这里开始 ,
具有默认参数的参数必须是函数声明参数列表中的尾随参数。
例如:
void f(int a, int b = 2, int c = 3); // trailing defaults
void g(int a = 1, int b = 2, int c); // error, leading defaults
void h(int a, int b = 3, int c); // error, default in middle
因此,如果您是声明和定义spawn()
函数的人,那么您可以在结尾处使用默认值。而另一种方法是不可能的..
这在C ++中是不可能的,一旦为参数指定了默认值,所有后续参数也应该具有默认参数。 唯一的选择是重新排列参数,以便最后可以分配所有可以分配默认值的参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.