Hi
Ich programmiere ein Legespiel, bei dem die Karten in ein 8x8 Felder großes Feld gelegt werden. Hierzu möchte ich ein 8x8-Array aus Pointern auf Objekte der Klasse TCard (public von QObject) erstellen; probeweise habe ich auch ein 8x8-Array aus Pointern auf QLabels gemacht, auf welche die QPixmaps der Karten abgebildet werden. Hierzu habe ich in meiner Klassendefinition des Spielfeldes folgende Zeilen:
TCard *kartenfeld[8][8];
QLabel *labelfeld[8][8];
Das instanziieren der Objekte mit "new" klappt wunderbar, die Labels lassen sich problemlos in ein Layout einbinden und benutzen - alles wie geplant. Aber sobald das Programm beendet wird, schmeißt es mich zurück in die IDE und Visual Studio meldet mir einen Buffer Overrun.
Was mache ich falsch und wie kann ich mein Problem lösen?
Array aus Pointern auf QObjects
-
Mister_Crac
- Beiträge: 28
- Registriert: 10. August 2006 12:17
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Mister_Crac
- Beiträge: 28
- Registriert: 10. August 2006 12:17
Es soll Leute geben, die wollen Qt explizit für die grafische Darstellung nehmen und das, was der Sprachstandard von C++ sowieso schon abdeckt, wird eben in C++ gemacht... nur mal so als Anmerkung.Christian81 hat geschrieben:Wir programmieren hier mit Qt und benutzen nicht die Container-Klassen von Qt? Ich würde sagen - RTM!
Ja, das ändert nichts an der Meldung. Es ist soweit ich mich erinnern kann (bin grad nicht an einem rechner mit QT) sogar so, dass das bloße Deklarieren des Arrays für den Overrun sorgt - ohne je eines der Elemente mit new zu instanziieren.Mister_Crac hat geschrieben:Werden denn diese Arrays auch mit delete [] wieder freigegeben? Das sollte man machen.
Kann denn eine der generischen QT-Klassen direkt zum Speichern mehrdimensionaler Felder benutzt werden? Ich wollte ja explizit keine Listen benutzen, weil die so weit ich weiß immer eindimensional sind. Wenn nötig, kann ich eigene Zugriffsfunktionen schreiben, aber genau das wollte ich ja vermeiden.Wir programmieren hier mit Qt und benutzen nicht die Container-Klassen von Qt? Ich würde sagen - RTM!
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Ja, schon klar - vor allem wenn man nichts weiter zu tun hat als sich um solch grundlegende Dinge selbst zu kümmern...Mister_Crac hat geschrieben: Es soll Leute geben, die wollen Qt explizit für die grafische Darstellung nehmen und das, was der Sprachstandard von C++ sowieso schon abdeckt, wird eben in C++ gemacht... nur mal so als Anmerkung.
@User:
Was hindert dich daran QList<QList<TCard*>> zu benutzen. Ausserdem wäre ein bischen Code welcher das Problem aufzeigt, nicht schlecht.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung