Mögliche Fälle in denen ein Raw Pointer bei dynamischer Allokation besser ist als ein Smart Pointer?
-
Gibt es sowas? Ich konnt mich ja erst nicht dazu durchringen Smart Pointer zu verwenden aber mittlerweile hab ich überhaupt kein delete mehr in meinem Projekt.
Was wären das für Fälle?
-
Jetzt hab ich vergessen nochmal nachzuschauen ob man die "normalen" Pointer wirklich so nennt(habs bisher nur einmal so gelesen), wenn nicht, Verzeihung
-
wieso registrierst du dich eigentlich nicht?
-
Was genau meinst du denn mit "besser"? Performanter, handhabbarer, sicherer, ...?
-
Naja, dass es sinnvoll ist so einen zu verwenden.
-
Wenn du ihn halt ganz oft durch die gegen reichst, muss er ja immer reference conuting machen, das macht der normal halt nicht.
-
Wenn's die Boost-Lösung nicht gäbe, würde ich manchmal einen vector voller Zeiger für sinnvoll halten, wenn die halt nicht groß herumgereicht werden und die Zuständigkeit für diesen Vector beim "Anleger" bleibt. In etwa bei sowas:
class Primitive { ... }; class Sphere : public Primitive { ... }; class Plane : public Primitive { ... }; class Blubb { public: Blubb() { m_prims.push_back( new Sphere(...) ); m_prims.push_back( new Plane( ... ) ); } void doSomething() { for ( std::vector<Primitive*>::const_iterator primIter=m_prims.begin(); primIter!=m_prims.end(); primIter++ ) (*primIter)->foo(); } ~Blubb() { for ( std::vector<Primitive*>::const_iterator primIter=m_prims.begin(); primIter!=m_prims.end(); primIter++ ) delete *primIter; } private: std::vector<Primitive*> m_prims; };
-
Naja, die Smartpointer wurden erfunden, weil sie sinnloser als rohe Pointer sind.
