There are two things you need to take care of. First is the declaration of the function pointer type:
private:
typedef double (Fred::*fptr)(int x, int y);
fptr func;
Next is the syntax for calling the function using a pointer:
(this->*func)(foo,bar)
Here is the modified sample code that will compile and run:
#include <iostream>
class Fred
{
public:
Fred()
{
func = &Fred::fa;
}
void run()
{
int foo = 10, bar = 20;
std::cout << (this->*func)(foo,bar) << '\n';
}
double fa(int x, int y)
{
return (double)(x + y);
}
double fb(int x, int y)
{
}
private:
typedef double (Fred::*fptr)(int x, int y);
fptr func;
};
int
main ()
{
Fred f;
f.run();
return 0;
}