Seite 1 von 1

[gelöst] QVector/QList in struct ergibt "not in scope&q

Verfasst: 9. August 2010 11:16
von Cabo
Hallo,
ich habe mal wieder eine Frage.
Ich habe nach folgendem Muster eine Struktur angelegt:

Code: Alles auswählen

struct Traces{
QList<double> traces;
int index;
struct Traces *next;
}
Die Struktur befindet sich in der header-Datei unter der Klassen Deklaration.
Wenn ich nun in der cpp-Datei ein Objekt dieser Struktur anlege, kann ich auf die index Variable zugreifen, bei der QList sagt er mir allerdings "not in scope". Das selbe Problem tritt auch bei QVector auf. Bei einfachen Typen wie eben int, char etc findet er die Variable. Woran könnte das liegen?

Code: Alles auswählen

struct Traces *next, *first;
next = (Traces*)calloc(1, sizeof(struct Traces));
first = next;

next->index = 1; //funktioniert
next->traces.append(zahl); //funktioniert nicht, "not in scope"

Verfasst: 9. August 2010 11:41
von franzf
BITTE programmier C++ und nicht C. Verwende new statt <x>alloc.

Code: Alles auswählen

struct Traces{
    QList<double> traces;
    int index;
    Traces *next;  // das "struct" vor dem Traces brauchts in C++ nicht!
};

///

struct Traces *next, *first;
next = new Traces;
first = next;

next->index = 1; //funktioniert
next->traces.append(zahl);
Und dir ist klar, dass du grad die Member voll exponierst und der Verwender deines struct allen möglichen Dreck mit Objekten machen kann?
Du kannst in C++ diese Member private machen und getter/setter anbieten, in denen du überprüfen kannst, ob auch wirklich alles korrekt abläuft.

Verfasst: 9. August 2010 11:50
von Cabo
VIELEN dank für deine antwort -.- manchmal sind die fehler echt blöder als man meinen will ^^.
ich habe bis jetzt sowieso noch nicht viel mit der struktur gemacht, dieses "not in scope" hat mich vorrangig beschäftigt. ich werde auf jeden fall noch get/set methoden einbauen.
danke noch mal