Objekt richtig löschen.
-
1. Also, dass ist warscheinlich eine blöde Frage, aber ich weis nicht weiter. Ich habe in der Header meine eigene Klasse geschrieben:
class TGame { public: int richtung [31][31]; int item [31][31]; int Schlangenfeld [31][31]; int endex, endey; . . . void GameGo (void); . . . };2. Nun habe ich oben in meiner cpp dies geschrieben:
TGame *Game1;3. Wenn ich das Spiel starten will wird die Zeile ausgelöst, um ein Objekt meiner Klasse zu erzeugen:
Game1 = new TGame (Path1,StrToInt(Form1->Edit1->Text),StrToInt(Form1->Edit2->Text),StrToInt(Form1->Edit3->Text),Form1->RadioGroup1->Items->Strings[Form1->RadioGroup1->ItemIndex]);4. Am Ende des Spieles soll das Objekt gelöscht werde, dafür habe ich diese Zeile eingebaut:
delete Game1;5. Wenn ich jetzt aber das Spiel neu starte wird der Erstellungscode wie von 3. nochmal ausgeführt, und das neue Objekt soll den selben Namen wie das Objekt davor haben, aber in den Arrays meinem Objekt stehen dann noch die alten Werte obwohl ich doch das Objekt davor mit der Zeile von 4. gelöscht habe?
Was muss ich machen, damit in den Arrays beim 2ten erzeugen in selben Namen wieder Nullen sind?Ich hoffe ich bin im richtigen Teil des Forums.
Stratege993
-
Im Konstruktor diese mit Nullen füllen?
Wenn du ein Objekt löschst (delete) wird der Speicher als frei markiert (nach Aufruf des Destruktors). Wenn das neu angeforderte Objekt (später) zufällig den gleichen Speicherplatz wieder bekommt, hast du die Daten auch wieder.
-
Das beste wäre wohl, die Arrays durch STL- oder Boost-Container zu ersetzen. Diese würden dann im Gegensatz zu den C-Arrays initialisiert.
Aber am Anfang sind alle Array-Einträge auf 0? Kann ich mir nicht vorstellen...
Und findest du deine Konstruktor-Argumentliste nicht ein bisschen lang?

-
Sind doch nur 5 Parameter.

-
Ok und wie sagt man das ein Array alles Null bekommen soll? Ich hab versucht, aber ging so net:
test[20][20] = 0;Und das sieht net so gut aus:
test[20][20] = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
-
Schreib einfach den Konstruktor richtig (Initialisierungsliste) und du hast das Problem nicht. (Auch ansonsten solltest du dir so schnell, wie möglich angewöhnen IMMER alle Werte zu Initialisieren). Ansonsten gibt das dann so Fehler, wie, dass die Debug Version läuft, aber die Release Version nicht. Und das ist dann meist nur sehr eklig wieder zu finden/beheben.
EDIT:
Hast du es mal mit einer Schleife probiert? Ist ein wenig übersichtlicher..
-
drakon schrieb:
Hast du es mal mit einer Schleife probiert? Ist ein wenig übersichtlicher..
Ist im Gegensatz zu Initialisierungslisten bei Arrays als Membern auch möglich.

Man könnte zum Beispiel auch
std::fill()benutzen.
-
Nexus schrieb:
drakon schrieb:
Hast du es mal mit einer Schleife probiert? Ist ein wenig übersichtlicher..
Ist im Gegensatz zu Initialisierungslisten bei Arrays als Membern auch möglich.

Was willst du mir damit sagen?
-
test[20][20] = {0};
-
Ich habe schon alles bis auf die Arrays in den Konstruktor einen Wert zugewiesen. Jetzt habe ich mit 2 Forschleifen die Arrays auch genullt, Problem gelöst.
-
drakon schrieb:
Nexus schrieb:
Ist im Gegensatz zu Initialisierungslisten bei Arrays als Membern auch möglich.

Was willst du mir damit sagen?
Dir nichts, aber dem Threadersteller und Fellhuhn, die versucht haben, Member-Arrays per Initialisierungsliste zu initialisieren.

Wieso fasst du denn alles gegen dich auf? :p
-
Nexus schrieb:
drakon schrieb:
Nexus schrieb:
Ist im Gegensatz zu Initialisierungslisten bei Arrays als Membern auch möglich.

Was willst du mir damit sagen?
Dir nichts, aber dem Threadersteller und Fellhuhn, die versucht haben, Member-Arrays per Initialisierungsliste zu initialisieren.

Wieso fasst du denn alles gegen dich auf? :p
Weil du mich gequotet hast.
- Quoten sollte man vorsichtig. Ist mit letztens auch passiert, dass es ein Missverständniss gegeben hat. 
btw:
Warum alles?
-
drakon schrieb:
Weil du mich gequotet hast.
- Quoten sollte man vorsichtig. Ist mit letztens auch passiert, dass es ein Missverständniss gegeben hat. 
Hm, da hast du Recht (hab ich letztes Mal auch mitbekommen). Sorry für die Unannehmlichkeiten.

drakon schrieb:
Warum alles?

Hast du das ":p" am Schluss überlesen? War nicht ganz ernst gemeint.

-
Nexus schrieb:
drakon schrieb:
Warum alles?

Hast du das ":p" am Schluss überlesen? War nicht ganz ernst gemeint.

Doch, aber genau das wollte ich ja.
- Warum musst du dich immer rechtfertigen? 
(OK. Wir hören besser auf..;) )
-
Tut mir leid, ich dachte, ich würde dir noch eine Antwort auf die Frage "warum alles?" schulden. Aber ich denke, wir verstehen uns...
