list -> ersetzen
-
Hallo,
ich habe hier eine list mit einigen einträgen. ich habe eine get-funktion, die mir den iterator mit einem bestimmten index angibt. also getxy(3) und er liefert mir einen pointer auf den iterator 3. das funktioniert soweit ganz gut, wenn ich jedoch den iterator ändern möchte getxy(3)->setYx(2), dann ändert er zwar das objekt, auf das gezeigt wird, ind er liste bleibt jedoch der alte bestand: getxy(3)->getYx() liefert auch nachdem man getxy(3)->setYx(x) gemacht hat den gleichen wert. zur zeit löse ich das problem wie folgt:
ich nehme mit mittels getxy(x) ein objekt mach daraus ein neues lösche x mittels remove und änder die werte und mach insert und aktualisier dementsprechend die liste. geht das nicht einfacher/effizienter?ich hoffe irgendjemand hat es verstanden. ich blick langsam selbst nicht mehr so ganz durch.
gruß.
-
Wie sieht getxy aus?
-
Server* ServerLib::getServer(int index) { iterator it = begin(); for(int i=0; i!=index; i++) { it++; } pServer = new Server(*it); return pServer; }
damit bin ich allerdings auch nicht zufrieden, da ich pServer so erst im destruktor zerschlagen kann...
-
Warum erstellst du eine neue Server-Instanz? Warum nicht einfach
return *it;
?
Dann klappt's auch mit dem Aktualisieren.
-
geht nich:
error C2440: 'return' : cannot convert from 'std::allocator<_Ty>::value_type' to 'Server *'
with
[
_Ty=Server
]
-
Lass die Funktion eine Referenz zurückgeben, keinen Zeiger.
-
ups, danke. ich dachte das hätte ich schon probiert...
-
Server* ServerLib::getServer(int index) { iterator it = begin(); std::advance(it, index) return &(*it); }