Probleme mit dem auto_ptr
-
Hallo!
Wieso geht folgende zuweisung nicht (fett und kursiv markiert):
[cpp]
#include <memory>
#include <iostream>
using namespace std;class Bla
{
public:
int a;};
int main()
{
auto_ptr<Bla> ptr; //(new Bla); gehtptr = new Bla();
cout<<ptr->a<<endl;
cin.get();
return(0);
}
[/cpp]Wie kann ich einem auto_ptr einen Pointer Zuweisen? Ich habe eine Map die Pointer enthält und da mir das ewige delete auf die nerven geht und unübersichtlich ist wollte ich eben auto_ptr nehmen.
-
hmmm123 schrieb:
Wie kann ich einem auto_ptr einen Pointer Zuweisen?
Mit ptr.reset(lalala); oder ptr = std::auto_ptr<bla>(lala);
hmmm123 schrieb:
Ich habe eine Map die Pointer enthält und da mir das ewige delete auf die nerven geht und unübersichtlich ist wollte ich eben auto_ptr nehmen.
Standardcontainer mit auto_ptr zu füllen ist verboten, da sich ein auto_ptr vollkommen anders verhält, als es std::map verlangt. Schau mal in die FAQ, da steht sicher noch mehr dazu.
-
Da auto_ptr<> verhindert, das es zwei "Besitzer" des Objektes gibt, dürfte es etwas schwierig werden auto_ptr<> in Containern zu verwenden.
Du solltest dir deshalb den smart_ptr aus der boost-Library anschauen. Den kannst du dafür verwenden. Mit dem smart_ptr mußt du dich nicht um delete kümmern und es kann auch mehrere Besitzer geben.