Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
=]Mid[=]Night[= Super JLI'ler
Anmeldedatum: 20.11.2002 Beiträge: 380 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 06.08.2003, 07:54 Titel: static |
|
|
Ich habe (wie in einem früheren Thread erwähnt) mein Fenster in eine Klasse eingebaut und dafür die Callback-Funktion static definiert. Wie kann ich aus dieser Callback-Funktion andere Methoden der Klasse, die nicht static sind aufrufen? |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 06.08.2003, 08:00 Titel: |
|
|
Genauso wie jede andere Funktion. ;) _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
=]Mid[=]Night[= Super JLI'ler
Anmeldedatum: 20.11.2002 Beiträge: 380 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 06.08.2003, 08:07 Titel: |
|
|
nö:
Code: |
// static definiert in class CEngine
LRESULT CALLBACK CEngine::MessageHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
break;
case WM_CHAR:
CharMessage((char)wParam);
return 0;
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
Compiling...
Engine.cpp
C:\MyProjects\3D Engine\Engine.cpp(79) : error C2352: 'CEngine::CharMessage' : illegal call of non-static member function
c:\myprojects\3d engine\engine.h(45) : see declaration of 'CharMessage'
|
|
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
|
Nach oben |
|
|
HotAcid Super JLI'ler
Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 06.08.2003, 10:37 Titel: |
|
|
ich geb einfach mal ein paar Infos zu dem Thema zum besten:
1. ohne static:
jedesmal, wenn du von einer Klasse eine Instanz erstellst, wird für die entsprechende Instanz ein Satz Variablen/Methoden entsprechend der Klassendefinition erstellt.
2. mit static:
die entsprechende Variable/Methode wird nur genau einmal erstellt, unabhängig von unterschiedlichen Instanzen.
Wenn du jetzt von einer "static"-Methode auf eine nichtstatische zugreifen willst, musst du folgendes beachten: Jede Instanz der Klasse besitzt diese nichtstatische Methode. Daher musst du der statischen Methode mitteilen, welche Instanz du meinst. Das kannst du z.B. machen, indem du eine statische Variable anlegst, der du vor dem Aufruf die entsprechende Instanz zuweist. Dann kannst du in der statischen Methode die nichtstatische Methode der entsprechenden Instanz aufrufen.
hoffe, das war jetzt nicht zu konfus...
cu Felix _________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 06.08.2003, 10:42 Titel: |
|
|
Zitat: |
jedesmal, wenn du von einer Klasse eine Instanz erstellst, wird für die entsprechende Instanz ein Satz Variablen/Methoden entsprechend der Klassendefinition erstellt.
|
Das ist nicht ganz richtig. Die Methoden werden nicht mehrmals in den Speicher geschrieben. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
=]Mid[=]Night[= Super JLI'ler
Anmeldedatum: 20.11.2002 Beiträge: 380 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 06.08.2003, 10:45 Titel: |
|
|
Danke für die Antworten, ich mach es jetzt mit DirectInput |
|
Nach oben |
|
|
HotAcid Super JLI'ler
Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 06.08.2003, 16:36 Titel: |
|
|
Hazel hat Folgendes geschrieben: | Zitat: |
jedesmal, wenn du von einer Klasse eine Instanz erstellst, wird für die entsprechende Instanz ein Satz Variablen/Methoden entsprechend der Klassendefinition erstellt.
|
Das ist nicht ganz richtig. Die Methoden werden nicht mehrmals in den Speicher geschrieben. |
ja, stimmt, hast recht. Das wird nur mit den Variablen gemacht, ich wollte auch nur ausdrücken, das jede Instanz "ihre eigene" Methode hat, auch wenn alle auf den gleichen physikalischen Speicher zugreifen
cu Felix _________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
|
|