先看一下函数 F 的两个重载:
1 2 3 4 5 6 7 8 9 |
void F() { cout << "F()" << endl; } void F(int i = 10) { cout << "F(int) " << i << endl; } |
现在,如果你计划用 F() 来调用函数,会得到一个编译错误。
error C2668: ‘F’ : ambiguous call to overloaded function
正确的方法应该是:
1 2 |
((void (*)(void))F)(); ((void (*)(int = 10))F)(); |
怪异吧?