Problem mit vector<int> und QList<CVector>

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
gentlesea
Beiträge: 27
Registriert: 27. März 2008 10:30

Problem mit vector<int> und QList<CVector>

Beitrag von gentlesea »

Hallo Forum,

ich habe eine Klasse CVector.h, die einen vector enthält:

Code: Alles auswählen

[...]
public:
	vector<int> listOfScatterPoints;
[...]
In einer anderen Klasse rufe ich folgenden Code auf:

Code: Alles auswählen

CVector* pMeinHeapTestVektor = new CVector();
pMeinHeapTestVektor->listOfScatterPoints.push_back(1);
int vorher = (int) pMeinHeapTestVektor->listOfScatterPoints.size();
m_listOfVertices.append(*pMeinHeapTestVektor);
CVector CVectorAusDerListe = m_listOfVertices.at(m_listOfVertices.count()-1);
int nachher = (int) CVectorAusDerListe.listOfScatterPoints.size();
Ich lege mir ein Objekt vom Typ CVector auf dem Stack an. Dieses Objekt enthält einen vector<int>, den ich in der Header-Datei der Klasse CVector (und nur dort) definiert habe.

Ich kann nun in dieses Objekt mittels push_back Werte reinfüllen. vorher liefert mir 1. Sobald ich dieses Objekt jedoch mittels append an eine QList<CVector> m_listOfVertices anhänge und dieses wieder abhole, ist der vector leer. nachher liefert mir 0. Wie kann das sein?

Versuche, das ganze auf dem Heap mittels new CVector anzulegen, haben das Problem auch nicht beseitigen können.

Was mache ich falsch?
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

ne klasse mit nur einem oeffentlichen member ... solltest eh gleich nen struct nehmen, und ja keine methoden dranhaengen, weil mit datenkapslung und OOP hat das ja ned mehr viel zu tun ....

Nur was zu meinem verstaendniss ....
Warum willst du nen vector aufn heap legen ???
das ding frisst so wenig an speicher aufn stack, das es fast mit dem pointer selber konkurrieren kann . Ok aber nur fast :-)

Laufzeit ??? dann ist aber dein beispielcode schlecht gewahlt ...

warum castet man nen sizetype aufn int ??? eigentlich ist man froh doch schon nen unsigned typen zu haben ...
und dann auch noch mitm C-Cast ... boese boese !

m_listOfVertices.append(*pMeinHeapTestVektor);
kann das ding gescheit mit dem vector umgehen ???
wird da kopiert, oder haelt sich das ding gar nur ne referenz ?

Ciao ...
gentlesea
Beiträge: 27
Registriert: 27. März 2008 10:30

Beitrag von gentlesea »

Natürlich sind in der Klasse noch andere Member-Variablen. Deswegen ja auch die Aussparungsklammern ([...]). Das Problem hat sich mittlerweile gelöst. Der Copy-Constructor war noch nicht so implementiert, dass er auch die Referenz kopiert hat.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Aber trotzdem ist ne oeffentliche member in ner klasse kein guter OOP Stil ...

Ciao ...
Antworten