CMap mit CString auf Funktionszeiger
-
Hallo!
Folgendes Problem:typedef void (*pFkt)(CString); //Funktionszeiger CMap<CString,LPCTSTR,pFkt,pFkt> map; //CMap definiert
jetzt will ich eine Zuordnung festlegen:
map.SetAt("Teststring",funktion);
wobei funktion deklariert ist als
void CDownload::funktion(CString zeile)
Aber der Compiler meckert
*
'SetAt' : Konvertierung des Parameters 2 von 'void (class CString)' in 'void (__cdecl *)(class CString)' nicht moeglich
*Woran kann das liegen und wie behebe ich das?
Vielen tausend Dank![ Dieser Beitrag wurde am 28.03.2003 um 13:05 Uhr von Ravel2000 editiert. ]
[ Dieser Beitrag wurde am 28.03.2003 um 13:06 Uhr von Ravel2000 editiert. ]
-
erstmal das durchlesen:
Methodenpointer
-
ansonsten die methode statisch machen (static)
-
Herzlichen Dank!!!
so funktioniert es:
typedef void (CDownload::*pFkt)(CString);
-
Oh, compilieren funzt zwar ohne Fehler, aber wie ruf ich dann die Funktion auf?
So gehts jedenfalls nicht:pFkt test; map.Lookup("Teststring",test); (*test)("Hallo");
Da meckert er
*
error C2064: Ausdruck ergibt keine Funktion
*Wie erhalte ich nun den Funktionszeiger und rufe damit die Memberfunktion auf?
[ Dieser Beitrag wurde am 28.03.2003 um 13:49 Uhr von Ravel2000 editiert. ]
-
Methodenzeiger sind immer an eine Instanz gebunden. Steht doch da im Thread.
(this->*test)("Hallo");
-
JUHUU, es funzt!!!
Danke vielmals!