Funktion als Parameter übergeben
-
Hallo,
stehe gerade vor dem Problem eine Funktion als Parameter zu übergeben - was bei einer ganz normalen C-Konsolenanwendung auch problemlos geht, aber irgendwas mach ich da falsch wenn ich eine Mitgliedsfunktion einer Klasse an eine andere Mitgliedsfunktion dieser Klasse übergeben will.
Bei folgendem Code:
void CTestprojektDlg::test1() { MessageBox("test"); } void CTestprojektDlg::test2(void (*f)()) { f(); } void CTestprojektDlg::OnButton1() { test2(test1); }
beschwert sich der Compiler mit "error C2664: 'test2' : Konvertierung des Parameters 1 von 'void (void)' in 'void (__cdecl *)(void)' nicht moeglich
Keine Funktion mit diesem Namen im Gueltigkeitsbereich stimmt mit dem Zieltyp ueberein" beim Aufruf test2(test1).Ist das irgendwas Microsoft-sepzifisches, etc.? Bzw. was mach ich da mit meinem Anfängerwissen falsch?
thx,
rabbit
-
sieh mal in den FAQ-Bereich
bei Klassenmethoden geht das anders.
-
Member-Pointer sind nicht ganz so einfach zu handhaben. Ich geb dir am besten einfach mal ein Beispiel:
struct A { void foo(int x) { } void bar(void(A::*f)(int)) { (this->*f)(2); } void baz() { bar(&A::foo); } };
-
oki thx, so funktionierts