По сути, я хочу передать ссылку функции-члена в другую функцию другого класса. Пример кода такой:Указатель для ссылки на функцию-член класса
#include<iostream>
using namespace std;
class algorithm
{
void (*ODE)(double * timeDeri, double * var);
void simulation()
{
//use ODE to do simulation
}
parent(void (*someODE)(double * timeDeri, double * var))
{
ODE=someODE;
}
}
class model:algorithm
{
void specificODE(double * timeDeri, double * var)
{
//detail of the ODE
}
model() : algorithm(specificODE)
{
//some initialization
}
}
int main()
{
model a;
a.simulation();
}
Теперь я знаю, что этот код не будет работать. Поскольку указатель на функцию можно использовать только для статической функции. Однако, по некоторым практическим причинам, я не могу сделать specificODE
статическим. Поэтому я задаюсь вопросом, может ли какой-то указатель помочь мне в этом. Может ли кто-нибудь помочь?
PS1, я проверил указатель на функцию-член. Этот указатель полезен, если я хочу указать на функцию-член в том же классе. Однако в этом случае указатель должен иметь возможность указывать на функцию-член другого класса.
PS2, Определение класса алгоритма на основе модели - это работа. Тем не менее, я хочу сделать модель и алгоритм независимыми друг от друга. Так что, если я использую тот же алгоритм на другой модели, мне не нужно возиться с кодом в моем классе алгоритмов. По той же причине я не хочу подружиться с классом модели и классом алгоритмов или делать что-либо специально для класса модели в классе алгоритмов.