Array aus Pointern auf QObjects

Alles rund um die Programmierung mit Qt
Antworten
User
Beiträge: 16
Registriert: 17. Mai 2007 00:42

Array aus Pointern auf QObjects

Beitrag 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?
Mister_Crac
Beiträge: 28
Registriert: 10. August 2006 12:17

Beitrag von Mister_Crac »

Werden denn diese Arrays auch mit delete [] wieder freigegeben? Das sollte man machen.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wir programmieren hier mit Qt und benutzen nicht die Container-Klassen von Qt? Ich würde sagen - RTM!
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Mister_Crac
Beiträge: 28
Registriert: 10. August 2006 12:17

Beitrag 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.
User
Beiträge: 16
Registriert: 17. Mai 2007 00:42

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten