Funktiospointer
-
Hallo zusammen,
ich habe ein kleines Problem. Ich habe zwar die alten Beiträge durchsucht, aber nicht passendes gefunden. Hier der Code:
class currentdens { public: [..] currentdens(); double F(double z,gsl_complex t); double fF(double t, void* p); double* peaks(double numz,double numpl,double numpr); }; [...] double* currentdens::peaks(double numz,double numpl,double numpr) { [...] gsl_function F; F.function = &fF; [...] }Ich erhalte dann aber folgende Fehlermeldung:
s_a_pos_dep.cpp(241): error: a value of type "double (currentdens::*)(double, void *)" cannot be assigned to an entity of type "double (*)(double, void *)" F.function = &fF; ^Hat jemand von euch eine Idee, wie ich das lösen könnte?
Danke,
Markus
-
fF static machen
-
Gibts wirklich noch keinen FAQ Eintrag zum Unterschied Memberfunktion- und Funktionszeiger? Die Frage hör ich in letzter Zeit wirklich extrem oft...
-
sothis_ schrieb:
fF static machen
ok, das hat funktioniert, damit bekomme ich aber das problem, das ich nicht mehr auf (public) elementvariablen die im konstruktor initialsiert wurden, in der funktion zugreifen kann!?
-
static double fF(currentdens* object, double t, void* p);http://www.parashift.com/c++-faq-lite/pointers-to-members.html
-
mkph schrieb:
sothis_ schrieb:
fF static machen
ok, das hat funktioniert, damit bekomme ich aber das problem, das ich nicht mehr auf (public) elementvariablen die im konstruktor initialsiert wurden, in der funktion zugreifen kann!?
korrekt

da musst du der statischen funktion einen zeiger auf das objekt übergeben um darüber auf member zugreifen zu können
-
Such mal nach Elementzeiger das hatten wir hier wirklich bereits zur genüge und ist im Netz auch genug vertreten.
Ok, da "memberfunktionszeiger" bei google zuerst einfach mal ein Troll Thread von hier rausspuckt hier eine ausführliche Erklärung (Englisch)
-
Danke, habe das Problem damit gelöst:)