Seite 1 von 1

Problem mit Pointer auf QVector

Verfasst: 22. Juni 2006 08:17
von michams
Hi,

Ich hab ein kleines Problem mit Referenzen auf einen QVector.

Code: Alles auswählen

QVector<int> qvTest;
QVector<int> *pqvTest = &qvTest;
Wenn ich jetzt

Code: Alles auswählen

const int *iTest = &pqvTest->at(0);
schreibe, funktioniert das, liefert aber nur ein ReadOnly Access auf das Element.

Code: Alles auswählen

int *iTest2 = &pqvTest[0];
funktioniert nicht weil:

Code: Alles auswählen

ERROR: cannot convert `QVector<int>*' to `int*'
Wie komm ich über einen Pointer an ein beschreibbares Element dieses QVector?

Verfasst: 22. Juni 2006 10:12
von Christian81
Warum arbeitest du da mit dem Pointer? pqvTest[0] ist nicht T & QVector::operator[] ( int i )
qvTest[0] ist das was Du willst. Ein Zugriff über den komischen ptr ist nur über (*pqvTest)[0] möglich.

Verfasst: 22. Juni 2006 13:34
von michams
Warum arbeitest du da mit dem Pointer?
Ich hab das ja nur zur Vereinfachung so geschrieben, weil es eben genau das Problem repräsentiert, das ich hatte. In meinem konkreten Fall versteckt sich der Ziel-QVector in:
CData::mPackageStore.qv_Packages[i_PackageID].qv_PackageConfig.qvEntry;

und ich habe in meinem Dialog einen Pointer (pqvConfig) darauf bei der Initialisierung bekommen. Die Dialogklasse kann zudem nicht direkt auf Elemente im CData zugreifen, kann also nicht einfach direkt in den QVector reinschreiben.

Ein Zugriff über den komischen ptr ist nur über (*pqvTest)[0] möglich.


was demnach bei mir so aussehen würde und auch funktioniert:
CPackageConfigEntry *pPCEntry = &(*pqvConfig)[iCCnt];

Danke

Verfasst: 22. Juni 2006 13:46
von Christian81
Schön das es geht.

Ich versuche eben nur Pointer soweit wie möglich zu vermeiden und habe schon öfter sehr schlecht zu analysierende Probleme mit Pointern gehabt :)