Я нашел кое-что о своей проблеме, но я не очень хорошо понимаю. Мне нужно сделать что-то вроде этого:
class T
{
double a;
public:
double b;
void setT(double par)
{
a = par;
}
double funct(double par1)
{
return par1 / a;
}
void exec()
{
b = extfunct(funct, 10);
}
};
double extfunct(double (*f)(double),double par2)
{
return f(par2)+5;
}
Работа и функция только для примера, но структура такова. Причина этой структуры в том, что у меня есть предварительно созданный класс, который находит минимум функции gived (в данном примере это extfunct). Поэтому я должен использовать его для функции-члена класса. Я понял разницу между указателем на функцию и указателем на функцию-член, но я не понимаю, как это написать. Спасибо, и извините за плохое объяснение проблемы.
Используйте указатель на функцию-член:
struct Foo
{
void f(int, int) {}
void g(int, int) {}
void execute((Foo::*ptmf)(int, int), int a, int b)
{
// invoke
(this->*ptmf)(a, b);
}
};
Использование:
Foo x;
x.execute(&Foo::f, 1, 2); // calls x.f(1, 2)
x.execute(&Foo::g, 2, 1); // calls x.g(2, 1)
Эти указатели работают, как и ожидалось, с виртуальными функциями.
Других решений пока нет …