Zähler wird nicht erhöht
-
Hallo!
Ich habe eine Klasse mit unter anderem folgenden Elementen: (Poste nicht alles. Also bitte nicht wegen fehlenden Klammern oder so beschweren
)private: int zaehler; public: VektorClass() { zaehler = 0; } Element vektor[100]; bool add_item ( HWND window, TCHAR mname[260]);Bei add_item soll er ein Element in ein Vektor[zaehler] hinzufügen.
vektor[zaehler].hwnd_vektor = window; ++zaehler; return true;Wenn ich bei return true ein Haltepunkt setze ist zaehler auf 1 (korrekt). Ruf ich beim nächsten Klick diese Anwendung auf ( dient also für ein Hook ) und setze ein Haltepunkt vor dem return-Aufruf sehe ich, dass er wieder auf 0 steht.
Warum wird er nicht erhöht?
-
Bist Du sicher, dass Du beim zweiten Aufruf noch diesselbe Instanz der Klasse benutzt?
-
Du hast aber nicht zufällig in add_item eine lokale Variable, die ebenfalls zaehler heißt, oder?
Wird zaehler noch an anderen Stellen manipuliert?
Gruß Matze
-
@_matze
bei beiden Fragen -> nein
Habs auch schon mit VektorClass::zaehler versucht (was das ja ausschließen würde..)
benutze die Variable auch nirgendwo anders.@jencas
aaaargh .. Hab mal darüber nachgedacht. Und es kam raus, dass ich nicht die gleiche Instanz benutze.
Bei jedem Klick hab ich alsoVektorClass TestArraygehabt und somit immer eine neue Instanz.
Vielen Dank für die Hilfe!

Dann hätte ich nur noch eine Frage. Wo packe ich
VektorClass TestArraynun hin?
Ich hatte es zum testen grad nur mal mitten in die .cpp als globale Variable gespeichert (was ich aber in anderen Projekten noch nicht gesehen hab).In der OnInitFunktion geht es schonmal nicht..
-
Als member deines Dialogs...
-
Zahl/Zähler schrieb:
In der OnInitFunktion geht es schonmal nicht..
Ja, weil du in der OnInitDialog, genau wie in jeder Funktion, auch nur eine lokale Variable deklarieren würdest, die am Ende des Scopes (geschweifte Klammern) ihre Gültigkeit verliert. Lege die Variable als Member deiner Klasse an (Deklaration) und initialisiere sie im Konstruktor oder in OnInitDialog (Definition), wie bereits gesagt wurde.
Gruß Matze