我正在尝试使用代码段并在VS2010上遇到以下错误。
Error 1 error C2276: '&' : illegal operation on bound member function expression Line 19
以下是我的代码:
#include<iostream>
using namespace std;
class a
{
public:
void add(int x)
{
cout<<x+x<<endl;
}
void mult(int x)
{
cout<<x*x<<endl;
}
typedef void (a::*fptr)(int);
fptr retFuncP(char ch)
{
if(ch=='+')
{
return &add;
}
else
{
return &mult;
}
}
};
int main()
{
a objA;
void (a::*fptr)(int) = objA.retFuncP('+');
(objA.*fptr)(3);
cin.ignore();
}
使用void (a::*retFuncP(char ch))(int x)
作为替代方案也无法解决问题。这个似乎有什么不对?