我正在尝试一个代码片段,并在 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)
也没有解决问题。这似乎有什么问题?