Problem mit Pointer auf QVector

Alles rund um die Programmierung mit Qt
Antworten
michams
Beiträge: 56
Registriert: 14. November 2005 18:24

Problem mit Pointer auf QVector

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

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
michams
Beiträge: 56
Registriert: 14. November 2005 18:24

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

Beitrag 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 :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten