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.


Anmelden zum Antworten