Elementvariablenproblem...
-
Hallo, habe neulihc mit oop / c++ angefangen....
Mein Problem ist folgendes:
Ich ahbe eine Klasse und diese benötigt brush-objecte.
Somit hat die Klasse eine Elementvariable des Typs HBRUSH mitim namen bhandle, also:In der Klassen deklaration:
Private:
HBRUSH bhandle;
--------------------------------------
In der Elementfunktion:bhandle=CreateSolidBrush(...);
--------------------------------------
Nun will ich mit einer Elementfunktion der Klasse der besagten Elementvariablen den Handle zuweisen aber esgeht nicht. Nach der (fehlerfreien) Zuweisung die sowohl sytaktisch als auch für den Compiler OK ist, ist bhandle immer noch leer!!! Wie kommt das? Kann man denn in elementfunktonen bestimmten datentrypen als elementvariable nichts zuweisen oder wie oder was??PS: Ich bin mir sicher es liegt nicht am aufruf von
HBRUSH CreateSolidBrush(RGB(r,g,b));
Schonmal thx...
-
Zeig mal den richtigen Code der Zuweisungs-Funktion
-
Klassenname :: Funktionsname(int r, int g, int b)
{
m_R = r;
m_G = g;
m_B = b;
m_handle = (HBRUSH)CreateSolidBrush(RGB(m_R, m_G, m_B));
}PS: m_R und die anderen m_* Variablen sind ebenfalls elementvariablen der Klasse. Bei ihnen ist die zuweisung ganz gut...

-
Oben hast du dein Brush bhandle genannt

-
Nabend! Ich bins wieder. Ich ahbe das problem gefunden:
Wie behauptet war an dem eben kritisierten Code alles korrekt. Der Grund des "Nicht Klappens" war der (für mich immer noch unverständliche) Aufruf des destruktors der klasse. Dabei wurde das Brush-Object wieder freigegeben bevor ichs benutzen konnte und das führte in den test zu weissen fenstern...

Nun eine neue resultierende Frage:
Wann wird allgemein der Destruktor einer Klasse aufgerufen ??
Meines wissens nur wenn man delete aufruft um sie vom heap zu entfernen oder der gültigkeitsbereich verlassen wird. Bei mir geschiet das aber mitten in ner funktion die nichts deleted oder sonst was? Kann es auch andere auslöser geben?
-
habe auch das geklärt...
danke an alle die mitdachten.
gn8 @ll...