c++ komisch Fehler mit Klassen

3Cyb3r

Erfahrenes Mitglied
Code:
LRESULT CALLBACK WindowsManager::windowEventsProcessor(HWND   hWnd  , UINT   wMsg,
                                                       WPARAM wParam, LPARAM lParam)

{

	objKeyEvent.setID(wParam);
}
so in dieser funktion darf ich nicht verwenden
Code:
objKeyEvent.setID(0);
dann sag mein Compiler
Code:
C:\Dokumente und Einstellungen\Administrator\Desktop\Neuer Ordner\Ekto_Orbs\17\include\Management\WindowsManager.cpp(26) : error C2228: Der linke Teil von '.setID' muss eine Klasse/Struktur/Union sein

Allerdings in alle anderen Funktionen geht es z.B. in dieser
Code:
void WindowsManager::vKeyDown	()
{
	objKeyEvent.setID(0);
}

wir auch alles richtig deklariert

Code:
private:
	KeyEvent		objKeyEvent;
kein static vererbung nichts in der KeyEvent Klasse
 
Ich nehme mal an, dass windowEventsProcessor static ist?

Statische Funktionen haben keine zugehörige Instanz, deshalb kannst du auch nicht auf Member-Funktionen und -Variablen zugreifen (es sei denn, die wären auch static).

Du kannst dir aber in eine statische Variable einen Pointer auf deine aktive WindowsManager-Instanz setzen, und damit auf die eigentliche Instanz zugreifen (vorausgesetzt, dass es nur eine WindowsManager-Instanz gibt):

Code:
// in der .h
static WindowsManager*   s_pManager;

// in der .cpp
WindowsManager* WindowsManager::s_pManager;

// im Constructor
s_pManager = this;

// im Destructor
s_pManager = NULL

// in der windowEventsProcessor-Funktion:
s_pManager->objKeyEvent.setID( wParam );
 
Zurück