我有这段代码
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,但我不知道该怎么做。
答案 0 :(得分:0)
它不起作用,因为foo的函数签名与someFunction所期望的不对应。 foo中的默认参数不会使参数消失,它只是在编译时使用默认值填充它。
您可以尝试投射foo,看看它给你的是什么。
typedef void (*twoParameterFunctionType)(int, int);
someFunction((twoParamterFunctionType)foo);