你怎么能一次给一个函数一个参数?

时间:2014-08-26 03:08:40

标签: c++

例如,我有一个功能:

void get(int a, char b, int c, float d, int e, char f)

我想给d,e和f这个函数。如何将它们作为参数传递。

只是其中三个

2 个答案:

答案 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); };
}

也就是说,此重载仅需def 并返回一个可调用的实体,该实体需要 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)

如果您愿意切换函数的参数并将默认值赋予abc,则可以执行此操作。

void get( float d, int e, char f, int a = 10, char b='\n', int c=16);

然后,您可以使用def的值调用该函数。

get(5.0f, 20, '\t');

上述调用相当于

get(5.0f, 20, '\t', 10, '\n', 16);
                    ^^^^^^^^^^^^^^ These are the default value of `a`, `b`, and `c`.