Membervariablen aus statsichen Funktionen benutzen
-
Hallo!
Ich habe in etwa folgenden Code:
//CX.h class CX { public: ... static void EineFunktion(); protected: int iVar; };
Die Funktion "EineFunktion" muss aber die Variable iVar benutzen. Es existiert bereits ein Objekt der Klasse CX, dessen iVar benutzt werden soll.
//CX.cpp void CX::EineFunktion() { cout << iVar; }
Wie funktioniert ein solcher Zugriff? Der obige Codeausschnitt funktioniert, wie zu erwarten, nicht.
Was muss ich ändern?Danke!
MfG Pendragon
-
Statische Methoden können keine nicht-statischen Membervariablen benutzen.
Du musst also entweder die Membervariable ebenfalls statisch machen oder umgekehrt die Methode nicht-statisch.
-
Du brauchst einen Verweis auf deine Instanz, weil du Instanzvariablen natürlich nur im Zusammenhang mit einer Instanz benutzen kannst.
Entweder du hast eine statische Instanz (oder eine statische Referenz auf eine Instanz) oder du übergibst einen Verweis auf die Instanz als Parameter.
-
Das Problem beim letzten Vorschlag ist, dass es meine WndProc ist. Ich muss mal schauen, ob es trotzdem funktioniert... Gibt es da einen Lösungsansatz? Die Funktion ist ja ständig in "Benutzung" und wird nicht nur einmal aufgerufen. Und die WndProc in Klassen muss statisch sein. Also kann ich das nicht ändern... Das mit der statischen Variable könnte vielleicht funktionieren.
Danke schonmal.
-
es gibt ein haufen ansätze. wurde erst vor ein paar tagen im winapi forum diskutiert bzw. schau mal in die forensuche.
-
habe die suche schob benutzt und auch die koplette erste seite der ergebnis durchgeschaut. nur leider war keine passende lösung dabei. aber ich werde nochmal im winapi forum suchen...
-
ich meinte auch die suche in verbindung mit winapi
-
miller_m schrieb:
ich meinte auch die suche in verbindung mit winapi
ich weiß. ich kann ja lesen...
-
Im FAQ ist diese Frage auch schon behandelt worden.
-
Nach langem Suchen und Informieren, hat es endlich mit SetWindowLong funktioniert...
:p
thx