Указатель на функцию внутри класса в C++
Внутри класса Matrix есть функции, которые получают 3 значения:
double Matrix::f(double a, int b, int c){
return a+b+c;
}
double Matrix::g(double a, int b, int c){
return a*b*c;
}
Есть еще 2 функции, 1-я создает указатель на f и g и передает в другую функцию, тк f(), g() получают 3 значения и возвращают double
double Matrix::fr(){
f_ptr = &f;
double x1=fx(1,1,1);
f_ptr = &g;
x1+=fx(2,2,2);
return x1;
}
double Matrix::fx(int a, int b, int c){
return f_ptr(a,b,c);
}
Вся эта работа внутри одного класса Matrix Внутри класса создается указатель на функцию. Пробовал создавать несколькими способами:
typedef double (Matrix::*function)(double,int,int); // 1й способ
//typedef double (*function)(double,int,int); // 2й способ
//using function = double(*)(double, int, int); // 3й способ
//using function = double(Matrix::*)(double, int, int); // 4й способ
function f_ptr; // сам указатель
Все класса спокойно могу использовать указатели на внешние функции. 1-й и 4-й спобоб дают ошибку в функции fx: f_ptr(a,b,c) - E0109 выражение перед скобками вероятного вызова должно иметь тип функции (pointer-to-) и C2064 результатом вычисления фрагмента не является функция, принимающая 3 аргументов
Думаю попробовать такое: функции создавать вне класса. У меня файлы такие: main.cpp, Matrix.h, Matrix.cpp. Думаю создать функцию f(...) и g(...) внутри Matrix.cpp, но без Matrix:: и убрать их в Matrix.h чтобы они были функциями вне класса. Но, мне кажется, что это не прокатит. - да, это не сработало: жалоба на функцию "необъявленный идентификатор"