Zwei Listen

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Mr.Green
Beiträge: 21
Registriert: 6. September 2009 21:50

Zwei Listen

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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.
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag 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.
Mr.Green
Beiträge: 21
Registriert: 6. September 2009 21:50

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

Beitrag von Christian81 »

Doku lesen und sehen dass es nicht nur at() gibt.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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...
Antworten