- Mitglied seit
- 09.11.2002
- Beiträge
- 880
- Reaktionen
- 0
Ahh, hallo! Ich habe da nochmal eine Frage:
Ich habe innerhalb einer Klasse 2 Funktionen definiert (private, und nicht-static!), und ich möchte zur Laufzeit die richtige auswählen, also brauche ich einen Zeiger auf eine Funktion. Wie mache ich das?
Fehlermeldung, die ich nicht verstehe:
simplex.cpp:62: error: must use ‘.*’ or ‘->*’ to call pointer-to-member function in ‘((Simplex*)this)->Simplex::fkt (...)’
Diese Meldung bezieht sich auf Simplex::downhill(), d.h. vorher in der Deklaration und im Constructor ist alles richtig gemacht, nehme ich an. Wie rufe ich also eine Funktion innerhalb einer Klasse auf, von der ich nur einen Pointer habe?
Google Suche nach dieser Fehlermeldung bringt leider auch nicht viel :-(
Danke sehr!
Edit: Im Konstruktor "fkt = &Simplex::GaussLorentzChiSqr;" anstelle von "fkt = &GaussLorentzChiSqr;" geschrieben.
Ich habe innerhalb einer Klasse 2 Funktionen definiert (private, und nicht-static!), und ich möchte zur Laufzeit die richtige auswählen, also brauche ich einen Zeiger auf eine Funktion. Wie mache ich das?
Code:
class Simplex
{
...
double (Simplex::*fkt)(int, double *); // Zeiger auf die Funktion
double GaussLorentzChiSqr(int n, double *params); // eine der in Frage kommenden Funktionen
...
};
Simplex::Simplex()
{
// Im Constructor wird die richtige Funktion ausgewählt...
fkt = &Simplex::GaussLorentzChiSqr;
}
void Simplex::downhill()
{
// ... und in dieser Funktion damit gearbeitet
double d = fkt(dumy1, dumy2);
}
Fehlermeldung, die ich nicht verstehe:
simplex.cpp:62: error: must use ‘.*’ or ‘->*’ to call pointer-to-member function in ‘((Simplex*)this)->Simplex::fkt (...)’
Diese Meldung bezieht sich auf Simplex::downhill(), d.h. vorher in der Deklaration und im Constructor ist alles richtig gemacht, nehme ich an. Wie rufe ich also eine Funktion innerhalb einer Klasse auf, von der ich nur einen Pointer habe?
Google Suche nach dieser Fehlermeldung bringt leider auch nicht viel :-(
Danke sehr!
Edit: Im Konstruktor "fkt = &Simplex::GaussLorentzChiSqr;" anstelle von "fkt = &GaussLorentzChiSqr;" geschrieben.
ownhill, ruf das ganze mal so auf: