繁体   English   中英

使用函数的默认值分配参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM