Есть две вещи, о которых нужно позаботиться. Сначала объявление типа указателя на функцию:
private:
typedef double (Fred::*fptr)(int x, int y);
fptr func;
Далее приводится синтаксис для вызова функции с помощью указателя:
(this->*func)(foo,bar)
Вот модифицированный пример кода, который будет скомпилирован и запущен:
#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;
}