下面的代码无法编译。该函数foo
将函数指针f
作为参数,f
严格将一个 int 作为参数并返回一个 int。在此示例中,foo
始终f
使用参数调用3
。我想传递一个函数,foo
以便在f(3)
评估时与其他参数一起评估它;但是,我不能将带有 2 个整数的函数作为参数传递给foo
(这个问题是一个真实问题的类比)。
#include <iostream>
void foo(int(*f)(int))
{
std::cout << f(3) << std::endl;
}
struct plusX
{
plusX(int x_) : x(x_) {}
int x;
int plus(int y)
{
return x + y;
}
};
int main()
{
plusX px4(4);
foo(&px4.plus); // ERROR!
}
ISO C++ 禁止使用绑定成员函数的地址来形成指向成员函数的指针。说'&plusX::plus'