Zeiger lässt sich nicht 0 setzen?
-
Ich schreibe grade an einem Kartenspiel und habe dazu zwei Klassen geschrieben. "Card" und "Deck". Im Deck steckt ein 'Card *CardArray[52];', welches im Constructor mit Karten gefüllt wird.
Ich bin noch ziemlich am Anfang und schreibe an den ganzen Funktionen fürs Deck.
An einer Stelle hapert es allerdings grade:Ich will eine Funktion basteln, die die im Stapel verbliebenen Karten zählt. Wenn eine Karte gezogen wird, soll sie 0 gesetzt werden.
Vereinfachte Darstellung:
Die Funktion zum zählen der Karten ist Bestandteil meiner Deck-Klasse:
int Deck::Count() //Counts the number of unused cards { int n=sizeof(Deck::CardArray)/4; int i; for (i=0; i<sizeof(Deck::CardArray)/4 ;i++) { if (Deck::CardArray[i]==0) { n--; //Pro leerer Karte soll n um 1 verringert werden. } } return n; }
EinButtonClickEvent() { Deck Stapel = new Deck(); Stapel->CardArray[18]=0; //Im Stapel verbleiben prinzipiell 51 Karten. if (Stapel->CardArray[18]==0) { label1->text::set("Karte 18 ist weg."); //Wird tatsächlich angezeigt. } int i= Stapel->Count(); label2->text::set(IntToStr(i)); //Zeigt 52 an! Egal wie viele Karten ich 0 setze. }
Hat jemand ne Idee, woran das liegen könnte, dass meine Count() Funktion immer 52 zurückgibt?
-
Hab den Fehler gefunden, funktioniert doch.