PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Smartpointer


Gast
2007-10-16, 08:35:55
morgen

ich lese gerade im Bereich SmartPointer und finde die auch ganz praktisch, aber sind sie es wirklich? Kann ich sinnvoll nur SmartPointer anstelle von normalen Pointern in meinem C++ Programm nutzen und habe damit (bei richtiger Verwendung :)) einfach ein paar Probleme weniger? Oder gibt es was, wo man sagt, daß dies "ja gar nicht mit SmartPointern geht".

Was ich sonst regelmäßig eingesetzt habe ist "Forward Declaration" und die Header wo möglich nur im cpp File inkludiert um einige Abhängigkeitsprobleme zu vermeiden. Das geht mit SmartPointern doch wohl nicht, weil ich das PointerTemplate ja mit dem kompletten Typ bauen muß? Oder gibt es generell einen besseren Weg diese Probleme zu vermeiden?

oder habe ich was übersehen?

RMC
2007-10-16, 19:06:00
Naja, SmartPointer sind schon wesentlich komfortabler zu handhaben und es werden auch zahlreiche Fehler dadurch vermieden. So gesehen ist das schon ein riesen Vorteil.

Was die produktive, technische Seite angeht wüsste ich jetzt spontan nicht was mit denen - im Gegensatz zu normalen Pointern - nicht funkionieren sollte.

del_4901
2007-10-16, 19:07:08
Naja, SmartPointer sind schon wesentlich komfortabler zu handhaben und es werden auch zahlreiche Fehler dadurch vermieden. So gesehen ist das schon ein riesen Vorteil.

Was die produktive, technische Seite angeht wüsste ich jetzt spontan nicht was mit denen - im Gegensatz zu normalen Pointern - nicht funkionieren sollte.

Ringstrukturen werden nicht automatisch eingesammelt.

eXistence
2007-10-18, 10:56:38
Verwendung in Containerklassen ist in der Regel auch nicht ganz unproblematisch

Gast
2007-10-19, 02:59:25
Ein richtiger Smart-Pointer (z.B. boost::smart_ptr, AKA tr1::smart_ptr als Bestandteil des nächsten C++ Standards) kann problemlos in Containern verwendet werden.

Du beziehst dich vermutlich auf std::auto_ptr<>. Der ist wirklich albern und Nutzlos.

Gast
2007-10-19, 07:41:09
Danke. Wie unterschieden sich die Boost Pointer von den STD Smart Pointern in diesen Dingen und wie sind die abzugrenzen?

Trap
2007-10-19, 10:28:26
Danke. Wie unterschieden sich die Boost Pointer von den STD Smart Pointern in diesen Dingen und wie sind die abzugrenzen?
Sie unterscheiden sich in der Semantik. auto_ptr sind Pointer mit genau einem Besitzer und "kopieren" ist eigentlich mehr ein weitergeben (und die Quelle wird dabei verändert).

Die Boost Pointer implementieren andere Verwaltungsmethoden, Referenzzählen und so...