如何传递一个函数,该函数具有默认定义的参数而不传递它们? C ++

时间:2015-11-20 20:55:09

标签: c++

我有这段代码

void foo(int Var1, int Var2, int default1=10, int defaul2=10);
void bar(int Var1, int Var2);
someFunction(void (*foobar)(int, int));
otherFunction(void (*foobar)(int, int, int, int));

int main(){
    someFunction(foo); //ERROR
    otherFunction(bar); //ERROR
}

所以,我想在忽略默认参数的同一函数上选择foo和bar,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

它不起作用,因为foo的函数签名与someFunction所期望的不对应。 foo中的默认参数不会使参数消失,它只是在编译时使用默认值填充它。

您可以尝试投射foo,看看它给你的是什么。

typedef void (*twoParameterFunctionType)(int, int);

someFunction((twoParamterFunctionType)foo);