Referenz auf letzte Element einer Vektor
-
Ich moechte erst eine Vector Liste um ein Element vergroessern und dieses dann als Referenz an eine andere Variable uebergeben. Probiert habe ich folgendes:
CouplerSetupList.resize(CouplerSetupList.size() + 1); CurrentCouplerSetup = & CouplerSetupList[CouplerSetupList.size()];
was mir aber folgenden Fehler bringt:
1>C:\Programme\Microsoft Visual Studio 8\VC\include\vector(690) : error C2248: "CouplerSetupDef::CouplerSetupDef": Kein Zugriff auf private Member, dessen Deklaration in der CouplerSetupDef-Klasse erfolgte.
1> e:\daten\dev\svn\hibiscus\cpp\advancedbeamshaping\qbeamshaping\src\CouplerStructures.h(162): Siehe Deklaration von 'CouplerSetupDef::CouplerSetupDef'
1> e:\daten\dev\svn\hibiscus\cpp\advancedbeamshaping\qbeamshaping\src\CouplerStructures.h(161): Siehe Deklaration von 'CouplerSetupDef'
1> C:\Programme\Microsoft Visual Studio 8\VC\include\vector(689): Bei der Kompilierung der Klassen-template der void std::vector<_Ty>::resize(unsigned int)-Memberfunktion
1> with
1> [
1> _Ty=CouplerSetupDef
1> ]
1> e:\daten\dev\svn\hibiscus\cpp\advancedbeamshaping\qbeamshaping\src\CouplerCalculation.h(22): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "std::vector<_Ty>".
1> with
1> [
1> _Ty=CouplerSetupDef
1> ]Wie mache ich es dann richtig
Matthias
-
Es scheint, als ob der Copy-Copnstructor und/oder der Zuweisungsoperator des Listenelements privat wären.
-
LordJaxom schrieb:
Es scheint, als ob der Copy-Copnstructor und/oder der Zuweisungsoperator des Listenelements privat wären.
ahh, der Konstruktor war privat...
-
CouplerSetupList.back()
liefert eine Referenz auf das letzte Element...
-
pospiech schrieb:
CurrentCouplerSetup = & CouplerSetupList[CouplerSetupList.size()];
Wenn du
CurrentCouplerSetup
verwenden willst, dann wird das aber ziemlich sicher knallen. Du greifst hier nämlich auf das Element hinter dem letzten zu.Wenn du die Standard-Container verwendest, dann benutze doch die Funktion
back
:
http://www.cplusplus.com/reference/stl/list/back.htmlGrüssli
-
pospiech schrieb:
Vector Liste
Man darf jetzt zwar raten, ob es sich um einen std::vector oder eine std::list handelt, aber back() gibts gottseidank für beides
Ebenso wie push_back(), womit das resize() dann auch überflüssig ist.