По сути, я хочу передать ссылку на функцию-член в другую функцию другого класса. Пример кода выглядит следующим образом:
#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, определить класс алгоритма на основе модели - это обходной путь. Однако я хочу сделать модель и алгоритм независимыми друг от друга. Так что, если я использую тот же алгоритм в другой модели, мне не нужно возиться с кодом в моем классе алгоритмов. По той же причине я не хочу дружить с классом модели и классом алгоритма или делать что-либо специально для класса модели в классе алгоритма.