我想在运行时设置函数指针。但我被困在这里。当我使用全局函数或静态类成员函数时,一切正常。但是,当函数是普通的类成员函数时。我总是遇到编译器错误。这是代码:
class A
{
int val;
public:
A() { val = 0; }
A(int j) { val = j; }
int aFun(int k) {val -= k; return val; }
};
typedef int (* func)(int );
class B
{
func m_addr;
public:
B(func param)
: m_addr(param)
{
}
void execute()
{
cout << m_addr(9) << endl;
}
};
我正在尝试像这样使用它们:
/* 错误 C2355: 'this' : 只能在非静态成员函数内部引用带有适当数量参数的函数指针或引用函数 */
A a;
B b(A::aFun);
b.execute();
在google了很多之后,我发现这std::mem_fun
可能会有所帮助。但我不知道如何使用它。任何人都可以帮助我吗?
PS:我正在使用 Visual C++ 2010