boost::intrusive_ptr
erfordert intrusive_ptr_add_ref
und intrusive_ptr_release
definiert werden. Warum wird keine Basisklasse zur Verfügung gestellt, die dies tun wird? Es gibt ein Beispiel hier: http://lists.boost.org/Archives/boost/2004/06/66957.php, aber das Poster sagt "Ich denke nicht unbedingt, dass dies eine gute Idee ist". Warum nicht?intrusive_ptr: Warum wird keine allgemeine Basisklasse bereitgestellt?
Update: Ich glaube nicht, dass die Tatsache, dass diese Klasse mit Mehrfachvererbung missbraucht werden könnte, Grund genug ist. Jede Klasse, die von mehreren Basisklassen mit ihrer eigenen Referenzzahl abgeleitet ist, würde das gleiche Problem haben. Ob diese Refcounts über eine Basisklasse implementiert werden oder nicht, macht keinen Unterschied.
Ich glaube nicht, dass es ein Problem mit Multithreading gibt; boost::shared_ptr
bietet atomare Referenzzählung und diese Klasse könnte auch.
über einen entsprechenden Hinweis, 'osg :: ref_ptr' aus der Open Bibliothek verwendet eine Top-Level gemeinsame Basisklasse (: Es kann sowohl für Thread-sicher oder faden unsicher Refcounting konfiguriert werden 'osg :: Referenced') für seine intrusive Smart-Pointer-Implementierung. –
Und osg :: Referenced ist kompatibel mit boost :: intrusive_ptr, da es die Funktionen intrusive_ptr_add_ref() und intrusive_ptr_release() zur Verfügung stellt. Funktioniert perfekt. –