C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

smart_ptr

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Torsten Mohr
Guest





PostPosted: Sat May 13, 2006 11:34 am    Post subject: smart_ptr Reply with quote



Hi,

in einem C++-Buch hab ich einige Beispiele über smart_ptr
gelesen. In den Beispielen wurde die Klasse smart_ptr aber
jeweils neu geschrieben. Ich hatte das auch so verstanden
daß man die Klasse smart_ptr jeweils spezifisch auf ein
Problem anpassen muss.

Es gibt aber in der STL eine allgemeine Klasse smart_ptr,
könnt ihr mir zu der ein paar Anwendungsbeispiele geben?


Vielen Dank für Tipps,
Torsten.

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Christoph Kliemt
Guest





PostPosted: Sun May 14, 2006 3:50 pm    Post subject: Re: smart_ptr Reply with quote



Torsten Mohr <tmohr (AT) s (DOT) netic.de> writes:

Quote:
in einem C++-Buch hab ich einige Beispiele ueber smart_ptr gelesen.
In den Beispielen wurde die Klasse smart_ptr aber jeweils neu
geschrieben. Ich hatte das auch so verstanden dass man die Klasse
smart_ptr jeweils spezifisch auf ein Problem anpassen muss.

Kommt auf den aktuellen smart_ptr an.

Quote:
Es gibt aber in der STL eine allgemeine Klasse smart_ptr, koennt ihr
mir zu der ein paar Anwendungsbeispiele geben?

Schau dir mal

http://boost.org/libs/smart_ptr/smart_ptr.htm

an. boost.org ist sowieso einen Blick wert:

We aim to establish "existing practice" and provide reference
implementations so that Boost libraries are suitable for eventual
standardization. Ten Boost libraries are already included in the C++
Standards Committee's Library Technical Report ( TR1) as a step
toward becoming part of a future C++ Standard. More Boost libraries
are proposed for the upcoming TR2.

hth,

Christoph

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Rolf Magnus
Guest





PostPosted: Sun May 14, 2006 4:21 pm    Post subject: Re: smart_ptr Reply with quote



Torsten Mohr wrote:

Quote:
Hi,

in einem C++-Buch hab ich einige Beispiele über smart_ptr
gelesen. In den Beispielen wurde die Klasse smart_ptr aber
jeweils neu geschrieben. Ich hatte das auch so verstanden
daß man die Klasse smart_ptr jeweils spezifisch auf ein
Problem anpassen muss.

Naja, "smart_ptr" ist auch kein besonder guter Name, da ein "smart pointer"
ein eher allgemeines Konzept ist. Es gibt verschiedene Arten von smart
pointers, z.B. std::auto_ptr oder einen "shared pointer".

Quote:
Es gibt aber in der STL eine allgemeine Klasse smart_ptr,
könnt ihr mir zu der ein paar Anwendungsbeispiele geben?

Ob es sowas in der STL gibt, weiß ich nicht. In der Standarbibliothek gibt's
aber so eine Klasse nicht.

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
kanze
Guest





PostPosted: Mon May 15, 2006 2:22 pm    Post subject: Re: smart_ptr Reply with quote

Torsten Mohr wrote:

Quote:
in einem C++-Buch hab ich einige Beispiele über smart_ptr
gelesen. In den Beispielen wurde die Klasse smart_ptr aber
jeweils neu geschrieben. Ich hatte das auch so verstanden
daß man die Klasse smart_ptr jeweils spezifisch auf ein
Problem anpassen muss.

Es kommt darauf an. Smart_ptr heißt kluger Zeiger; es gibt davon
viele, viele Arte, je nach dem welches Problem man erledigen
will. Und man muss wohl die Klasse für jede neue Art neu
schreiben.

Dagegen gibt es wohl ein Paar Benutzungen, die recht häufig
vorkomment; die Zeiger dafür werden wohl einmal geschrieben, und
dann überall eingesetzt. Typischerweise wäre also auto_ptr oder
die smart_ptr von Boost.

Quote:
Es gibt aber in der STL eine allgemeine Klasse smart_ptr,
könnt ihr mir zu der ein paar Anwendungsbeispiele geben?

Der einzige kluge Zeiger in der standard-Bibliothek ist
std::auto_ptr. Er hat eine etwas besondere Semantik, worin beim
Zuweisen auch den Zeiger auf der rechten Seite geändert wird.
Ich benutze ihn hauptsächlich in der Kommunikation zwischen
Threads, also:

template< typename T >
class MessageQueue
{
public:
void send( std::auto_ptr< T > message ) ;
std::auto_ptr< T > receive() ;
private:
// ...
} ;

Bei der Benutzung:

std::auto_ptr< Message >
m( new Message ) ;
// Message ausfühlen...
queue.send( m ) ;
// Und hier steht mir den Message nicht mehr zur
// Verfügung... m.get() == NULL.

Seine Benutzung ist nicht immer aber sehr einfach, weil er in
den Containern nicht vorkommen darf. Also zum Beispiel benutze
ich eine std::deque<T*> in der Implementierung von MessageQueue,
und muss in send:

myData.push_back( message.get() ) ;
message.release() ;

benutzen, statt einfach den message direkt in die Queue zu
kopieren.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.