У меня есть два класса, один из тех, кто (класса оды) имеют частный элемент, который является функцией (указатель на функцию):Используя функцию класса в конструкторе другого класса
class ode
{
private:
double T;
double (*sfn)(double,double,double*);//I mean this
int Ne;
public:
ode(double t,double (*f)(double,double,double*),int N)
{
Ne=N;
T=t;
sfn=f;
} //.....
}
и сейчас Я хочу построить объект ode, который в своей конструкции должен использовать функцию (sfn) из другого класса !! Если я хочу использовать функцию, не принадлежащую к каким-либо классам, я должен просто написать имя этой функции в конструкторе. Но эта ситуация другая. Что я могу сделать? как я могу построить этот объект?
Вы не можете передавать функции статического класса, используя эту подпись. Также вместо указателей на функции лучше определить интерфейс и передать ссылку на него. –
Другой совет: используйте 'std :: function', он будет работать для простых функций и функций класса. –
Помните, что функции-члены работают с данными из объекта класса, членом которого они являются. Они не имеют никакого смысла быть вызванным без их данных класса. Вы можете объявить * указатели функций * членов *, но они набираются в класс, в котором они входят, и для их вызова нужен объект такого типа. – Galik