kdevelop stürtzt ab wegen zu großem QVector

Verschiedenes zu Qt
Antworten
feldmaus
Beiträge: 32
Registriert: 25. September 2007 21:08

kdevelop stürtzt ab wegen zu großem QVector

Beitrag von feldmaus »

Guten Abend Leute,

mein kdevelop stürzt ab bei einer bestimmten Stelle in meinem Code. Die Fehlermeldung lautet:

Code: Alles auswählen

ASSERT failure in QVector<T>::operator[]: "index out of range", file /usr/include/qt4/QtCore/qvector.h, line 347
Ich habe ein struct,

Code: Alles auswählen

struct exprCollect {
    QStringList expInBrace;
    QStringList expOutsideBrace;
    QVector<bool> encounterBrace;
    int possiMultiply;//possibility multiplier, because of words in brackets
};
welches dann in einen Vector kommt,

Code: Alles auswählen

    QVector<exprCollect> vect(0);
Der Vector hat also zu Anfang keine Elemente, ist also 0 groß.

Sobald ich diesen Vector mit "exprCollect" Elementen füttere, bricht kdevelop zusammen,

Code: Alles auswählen

            vect[nExpr].expOutsideBrace << "";
            vect[nExpr].expInBrace << braceStr.simplified();
            vect[nExpr].encounterBrace << true;
"nExpr" ist vom Typ Int und zu Anfang 0 und wird dann inkrementiert bei jeden Schleifendurchgang. "braceStr" ist vom Typ String. Eine Idee was ich falsch mache?

Grüße Markus
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Re: kdevelop stürtzt ab wegen zu großem QVector

Beitrag von upsala »

Was hat das mit KDevelop zu tun? Oder programmierst du KDevelop um?

Wenn ein QVector eine größe von 0 hat, dann hat man auch keine Elemente auf die man zugreifen kann. Wenn du Elemente hinzufügen willst, dann mach dies mit append, push_back, push_front, prepend oder <<. Oder du legst deinen QVector gleich groß genug an.
feldmaus
Beiträge: 32
Registriert: 25. September 2007 21:08

Re: kdevelop stürtzt ab wegen zu großem QVector

Beitrag von feldmaus »

Ich programmiere an Parley rum und nutze kdevelop als IDE. Irgendwie scheint aber kdevelop abzustürzen an diesem Punkt.

Ich nutze ja den Operator << um neue Elemente hinzuzufügen. Mit append habe ich es jetzt auch mal probiert, aber der Fehler bleibt.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: kdevelop stürtzt ab wegen zu großem QVector

Beitrag von Christian81 »

Sorry aber 'vect[nExpr]' ist kein 'append()' und kein 'operator()<<' sondern ein Index-Zugriff auf ein Element welches nicht gibt -> C++ Grundlagen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
feldmaus
Beiträge: 32
Registriert: 25. September 2007 21:08

Re: kdevelop stürtzt ab wegen zu großem QVector

Beitrag von feldmaus »

@Christian81
Wofür entschuldigst Du Dich? :D

vect[nExpr] ist ein Zugriff auf ein Element vom Typ exprCollect und dieses hat unter anderem Elemente vom Typ QStringList auf die ich dann versuche den Operator << anzuwenden.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Re: kdevelop stürtzt ab wegen zu großem QVector

Beitrag von upsala »

Außerdem würde mich mal interessieren, wie sich der Absturtz von KDevelop bemerkbar macht.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Re: kdevelop stürtzt ab wegen zu großem QVector

Beitrag von upsala »

Ist das Element vect[nExpr] vorhanden oder nicht? Wie groß ist QVector zum Zeitpunkt, wenn diese Anweisung ausgeführt wird?
feldmaus
Beiträge: 32
Registriert: 25. September 2007 21:08

Re: kdevelop stürtzt ab wegen zu großem QVector

Beitrag von feldmaus »

@upsala
Also kdevelop zeigt mir nicht mehr die letzten Werte von den Variablen an, der Debug Modus wird einfach beendet, ich kann also gar nicht sehen wo das Problem wirklich liegt. Manchmal stürzt er auch schon ab bevor er die Zeile mit vect[nExpr] ausführt, aber mit gleicher Fehlermeldung. kdevelop bleibt aber auf meinem Bildschirm erhalten.
feldmaus
Beiträge: 32
Registriert: 25. September 2007 21:08

Re: kdevelop stürtzt ab wegen zu großem QVector

Beitrag von feldmaus »

Ist denn meine Vorgehensweise mit struct in dem Vector richtig? Laut google scheint es korrekt zun sein und mein Buch für Informatiker(Basics und mehr) gibt da auch keine konkreten Infos.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: kdevelop stürtzt ab wegen zu großem QVector

Beitrag von franzf »

vect[nExpr] ist ein Zugriff auf ein Element vom Typ exprCollect und dieses hat unter anderem Elemente vom Typ QStringList auf die ich dann versuche den Operator << anzuwenden.
ja, aber trotzdem ist dein vect[] noch immer leer! Du sollst erst vect füllen (append, operator<<()), DANACH kannst du auf die Elemente in vect zugreifen

Und außerdem stürzt nicht kdevelop ab, sondern dein Programm! Nur weil du in deinem Programm über die Grenzen des Vectors zugreifst, stürzt kdevelop nicht ab.
Antworten