例如,我有一个功能:
void get(int a, char b, int c, float d, int e, char f)
我想给d,e和f这个函数。如何将它们作为参数传递。
只是其中三个。
答案 0 :(得分:8)
写一个重载,如下所示:
auto get(float d, int e, char f) -> std::function<void(int, char, int)>
{
return [=](int a, char b, int c) { get(a,b,c, d,e,f); };
}
也就是说,此重载仅需d
,e
,f
并返回一个可调用的实体,该实体需要 rest 参数 - 这个可调用的实体最终会调用你的get()
函数。
您可以将其用作:
auto partial_get = get(d,e,f); //pass d, e, f
//code
partial_get(a,b,c); //invoke partial_get() passing rest of the arguments!
这里partial_get
是一个可调用的enity,你可以随时调用其余的参数调用 - partial_get
最终调用你的get()
函数传递所有必需的参数。
答案 1 :(得分:0)
如果您愿意切换函数的参数并将默认值赋予a
,b
和c
,则可以执行此操作。
void get( float d, int e, char f, int a = 10, char b='\n', int c=16);
然后,您可以使用d
,e
和f
的值调用该函数。
get(5.0f, 20, '\t');
上述调用相当于
get(5.0f, 20, '\t', 10, '\n', 16);
^^^^^^^^^^^^^^ These are the default value of `a`, `b`, and `c`.