Seite 1 von 1

Zwei Listen

Verfasst: 23. März 2010 22:14
von Mr.Green
Hallo,

ich habe zwei Listen:

Code: Alles auswählen

class CubeFrameData
{
public:    
    QString toString();
[...]
};


//Container for holding one picture
class CubePictureData
{
public:  
    QString toString();
[...]


    QList<CubeFrameData> frames;

};

und dann eine äußere List:

Code: Alles auswählen

QList<CubePictureData> m_pictures

Jetzt will ich darauf zugreifen:

Code: Alles auswählen

m_pictures.at(0).frames.append(NewFrame);
Dabei kommt heraus:

error: passing ‘const QList<CubeFrameData>’ as ‘this’ argument of ‘void QList<T>::append(const T&) [with T = CubeFrameData]’ discards qualifiers


Kann ic hdenn nicht so einfach auf die inere Liste (bzw. deren Elemente) zugreifen? Ich bin der Ansicht, dass ich das schon gemacht habe (oder war das Java?)

Und wie mache ich es richtig?

Gruß
Mr.Green

Verfasst: 24. März 2010 08:49
von franzf
Du hast scheinbar nur ein const CubePictureData Objekt.
Du verheimlichst uns den Aufruf, deshalb kann man auch nix genaueres sagen.
Aber die Fehlermeldung ist ja ausreichend aussagekräftig, und da steht sicher auch dabei wo der Fehler auftritt.

Verfasst: 24. März 2010 11:05
von AuE
Weiterer Fehler is wie du deine member strings anlegst.....

Code: Alles auswählen

QSting meinString;
nicht

Code: Alles auswählen

QString meinString();
Der Standardc'tor wird bei membern automatisch aufgerufen.

Verfasst: 24. März 2010 14:38
von archer
Schau dir mal dei Beschreibung con at(..) an.
at(..) gibt ein const-Objekt zurück. Da kannst du nichts anhängen.

Code: Alles auswählen

m_pictures[0].frames.append(NewFrame);
würde wohl gehen, wenn m_pictures[0] existent ist.

Verfasst: 25. März 2010 16:31
von Mr.Green
Der Aufruf ist

m_pictures.at(m_current_picture).frames.insert(i, d);

Dass at ein const Objekt zurückliefert habe ich jetzt auch gesehen :)

Dann aber die Frage, wie ich es sonst mache. Natürlich kann ich ein Array für m_picture nehmen, aber wo ist dann der Witz von Listen? Diew sollen mir doch die ganz Arbeit (malloc, sort etc etc) abnehmen.

Verfasst: 25. März 2010 16:40
von Christian81
Doku lesen und sehen dass es nicht nur at() gibt.

Verfasst: 25. März 2010 18:30
von franzf
Christian81 hat geschrieben:Doku lesen und sehen dass es nicht nur at() gibt.
Muss er nichtmal (leider).
Der Post von archer enthält doch bereits die Lösung...