Zeiger auf Funktion

fujitsufan

Erfahrenes Mitglied
Hallo zusammen,

weiß jemand ob ich in MFC einen Zeiger auf eine Funktion stellen kann.
In C++ mach ich da so.
C++:
//Zeiger auf GetPrintBasics oder GetTestBasics stellen dem Zweck entsprechend
CString(*pGetDocBasics)(CString, CString *);
pGetDocBasics = strPurpose == "TESTDOC" ? GetTestBasics : GetPrintBasics;

Selbst wenn ich die Deklarierung des Pointers als "typedef" mache meckert der Compiler.
Fehler C2440 "=": "CString (__thiscall CMainDialog::* )(CString,CString *)" kann nicht in "CString (__cdecl *)(CString,CString *)" konvertiert werden
Der Return (CString) und die Übergabeparameter (CString, CString*) sind aber korrekt.
Geht das in MFC überhaupt noch?

Vielen Dank
MfG.
fujitsufan
 
Lösung
Hallo ComFreek,

läuft.

C++:
//Den Zeiger abhängig vom Zweck auf die erforderiche Funtion setzen
    CString(__thiscall CMainDialog::*pGetDocBasics)(CString);
    pGetDocBasics = strPurpose == "TESTDOC" ? &CMainDialog::GetTestBasics : &CMainDialog::GetPrintBasics;
Zugriff über den Zeiger:
C++:
strTemp = (this->*pGetDocBasics)("OrderNo2");

Vielen Dank nochmal für deine Hilfe.

Mit freundlichen Grüßen
fujitsufan
Hallo ComFreek,

sieht mal gut aus. Der Compiler meckert nicht.
Ich hatte es schon mal so ausprobiert.
C++:
strTemp = (*this->pGetDocBasics)("OrderNo2");
Den * an der falschen Stelle.
Ich vervollständige den Code erst am Montag.
Dann kann ich die das Ergebnis liefern.

Vielen Dank mal bis dahin.
MfG.
fujitsufan
 
Hallo ComFreek,

läuft.

C++:
//Den Zeiger abhängig vom Zweck auf die erforderiche Funtion setzen
    CString(__thiscall CMainDialog::*pGetDocBasics)(CString);
    pGetDocBasics = strPurpose == "TESTDOC" ? &CMainDialog::GetTestBasics : &CMainDialog::GetPrintBasics;
Zugriff über den Zeiger:
C++:
strTemp = (this->*pGetDocBasics)("OrderNo2");

Vielen Dank nochmal für deine Hilfe.

Mit freundlichen Grüßen
fujitsufan
 
Lösung
Zurück