-1
Я попытался найти фрагмент кода и наткнулся на следующую ошибку на 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)
в качестве альтернативы не решить проблему. Что в этом плохого?