Seite 1 von 1

Array aus Pointern auf QObjects

Verfasst: 17. Mai 2007 00:58
von User
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?

Verfasst: 18. Mai 2007 16:40
von Mister_Crac
Werden denn diese Arrays auch mit delete [] wieder freigegeben? Das sollte man machen.

Verfasst: 18. Mai 2007 16:58
von Christian81
Wir programmieren hier mit Qt und benutzen nicht die Container-Klassen von Qt? Ich würde sagen - RTM!

Verfasst: 18. Mai 2007 18:02
von Mister_Crac
Christian81 hat geschrieben:Wir programmieren hier mit Qt und benutzen nicht die Container-Klassen von Qt? Ich würde sagen - RTM!
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.

Verfasst: 18. Mai 2007 18:52
von User
Mister_Crac hat geschrieben:Werden denn diese Arrays auch mit delete [] wieder freigegeben? Das sollte man machen.
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.
Wir programmieren hier mit Qt und benutzen nicht die Container-Klassen von Qt? Ich würde sagen - RTM!
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.

Verfasst: 18. Mai 2007 20:25
von Christian81
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.
Ja, schon klar - vor allem wenn man nichts weiter zu tun hat als sich um solch grundlegende Dinge selbst zu kümmern... ;)


@User:
Was hindert dich daran QList<QList<TCard*>> zu benutzen. Ausserdem wäre ein bischen Code welcher das Problem aufzeigt, nicht schlecht.