Hey Leute,
ich schreib morgen Abschlussprüfung in C++ und wollt mir noch paar Sachen anschauen. Unteranderem Methodenzeiger. Ich kann Zeiger auf normale Funktionen schon erstellen. Aber auf Methoden wills irgendwie nicht. Ist jetzt keine große Sache wenn ichs nicht kann. Wollt nur gerne mal wissen wie das mit den Dingern funktioniert.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#include <iostream>
using std::cout;
using std::endl;
class Klasse
{
public:
void F(int x)
{
cout << "F(" << x << ")\n";
}
};
void Funktion(int x)
{
cout << "Funtion(" << x << ")\n";
}
int main()
{
void (*P)(int) = Funktion;
void (Klasse::*M)(int) = &Klasse::F;
P(10);
M(20);
return 0;
}
|
VSC++ 2008 Express sagt folgendes:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
|
------ Erstellen gestartet: Projekt: MethodenZeiger, Konfiguration: Debug Win32 ------
Kompilieren...
MethodenZeiger.cpp
c:\development\methodenzeiger.cpp(26) : error C2064: Ausdruck ergibt keine Funktion, die 1 Argumente übernimmt
Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Michael\Eigene Dateien\Visual Studio 2008\Projects\MethodenZeiger\MethodenZeiger\Debug\BuildLog.htm" gespeichert.
MethodenZeiger - 1 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
|
Und G++ meint:
|
C-/C++-Quelltext
|
1
2
|
MethodenZeiger.cpp: In function 'int main()':
MethodenZeiger.cpp:26: error: must user .* oder ->* to call pointer-to-member function in 'M (...)'
|
Hoff mir kann jemand helfen.