Zurück   3DCenter Forum > Software-Hilfe Foren > Programmierung
Registrieren Hilfe Community Kalender Heutige Beiträge Suchen Uns unterstützen

Antwort
 
Themen-Optionen Ansicht
Alt 2006-03-22, 17:28:51   #1 (im Thread / einzeln)
Gast
Gast
 
Beiträge: n/a
Ein Objekt in 2 Listen

Hi!

Code:
class element
{
string name;
list<element> inhalt;
}

list<element> e_liste1, e_liste2;

main()
{...
element e;
e.name = "ersteselement";
e_liste1.push_back(e);
e_liste2.push_back(e);
...}
Wie kann ich ein Objekt e in zwei Listen stecken, sodass ich wirklich nur ein Objekt e habe.
(Un-)Sinn: Zum Beispiel wird auf e in Liste e_liste1 schreibend (eg e_liste1.back().name = "Kuh" zugegriffen, auf e_liste2 nur lesend.

Wenn ich e - wie oben im Code - in beide Listen 'pushe' und über eine der Listen das e ändere, dann bleibt das e in der anderen Liste unverändert. Soll aber nicht...
  Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2006-03-22, 17:41:12   #2 (im Thread / einzeln)
Gast
Gast
 
Beiträge: n/a
Re: Ein Objekt in 2 Listen

Achja, das soll C++ sein; und nach der geschlossenen, geschweiften Klammer der Klasse soll noch ein Semikolon stehen.
  Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2006-03-22, 17:43:54   #3 (im Thread / einzeln)
Pinoccio
Avantgarde Member
 
Benutzerbild von Pinoccio
 
Registriert: 2004-04-10
Beiträge: 6.331
Re: Ein Objekt in 2 Listen

Also so wie ich das sehe,m hast du in der Tat nur ein Element, nur halt zwei Zeiger/Referenzen drauf in den zwei verschiedenen Listen.

mfg Sebastian
Pinoccio ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2006-03-22, 18:19:23   #4 (im Thread / einzeln)
Gast
Gast
 
Beiträge: n/a
Re: Ein Objekt in 2 Listen

[QUOTE=Gast]
Code:
element e;
Muß er da nicht "element e = new element();" schreiben? Sonst landest doch auf'm Stack, oder?
  Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2006-03-22, 18:22:56   #5 (im Thread / einzeln)
Simon
Avantgarde Member
 
Benutzerbild von Simon
 
Registriert: 2001-04-11
Beiträge: 4.326
Re: Ein Objekt in 2 Listen

Das funktioniert so nicht. Wenn du was in eine std::list tust, wird eine Kopie deines Objects darin gespeichert. D.h. du mußt in deinen Listen entweder Zeiger/Referenzen verwalten oder es in beiden Listen ändern.

@Pinoccio: Leider falsch (s.o.).

@zweiter Gast: Ja und? Lass das Ding doch auf dem Stack. Und dein Vorschlag würde übrigens auch nicht gehen. Da fehlt der Derefenzierungsoperator.

€dit: damit der "kompetente Gast" nicht mehr so viel zu lachen hat

Man, bin ich froh, dass ich C++ los bin

Geändert von Simon (2006-03-22 um 19:29:17 Uhr)
Simon ist offline   Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2006-03-22, 19:21:02   #6 (im Thread / einzeln)
Kompetente Gast
Gast
 
Beiträge: n/a
Re: Ein Objekt in 2 Listen

LOL So viele Leute, und so viel Bullshit... Und de Zeigeroperator ist auch n1

Im Grunde gibts nur Pointer oder Referenzen (hierzu nimmst du z.B. boost::ref / boost::const_ref). Wo der Speicher im Endeffekt alloziert wird musst du selbst entscheiden. Villeicht schaust dir mal das RAII-Idiom an, oder weihst uns in dein Konzept ein.

Grüße
  Mit Zitat antworten Beitrag zum Zitieren auswählen
Alt 2006-03-22, 19:30:44   #7 (im Thread / einzeln)
Gast
Gast
 
Beiträge: n/a
Re: Ein Objekt in 2 Listen

Code:
list<element*> e_liste1, e_liste2;

main()
{...
element e;
e.name = "ersteselement";
e_liste1.push_back(&e);
e_liste2.push_back(&e);
...}
-zecki
  Mit Zitat antworten Beitrag zum Zitieren auswählen
Antwort

Lesezeichen
  • Dieses Thema bei Twitter speichern
  • Dieses Thema bei Facebook speichern


Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:38:26 Uhr.


Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.