Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Fireball

Alter Hase

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

31

14.07.2011, 16:30

Wenn man auto_ptr empfiehlt sollte man auch auf das merkwürdige Kopierverhalten hinweisen. Das Original wird dabei nämlich ungültig. Wenn man das beachtet ist er nützlich. Ausserdem sollte man darauf hinweisen, dass er nicht in Containern(vector, list, map usw.) verwendet werden darf, da diese normales Kopierverhalten voraussetzen.
Jep deswegen habe ich auch


C-/C++-Quelltext

1
std::auto_ptr foo2(new Foo());


geschrieben und nicht

C-/C++-Quelltext

1
Foo *f = new Foo();std::auto_ptr foo2(f);



In der Tat kann man keinen auto_ptr in einem STL Container schreiben, geht schon allerdings erhält man dann ein null zurück.
Es gibt aber aber auch für dieses Problem eine Lösung und zwar die Smart Pointer aus Boost.


http://www.c-plusplus.de/forum/134971


Ich denke aber, dass das nun aber zu weit geht ;-)

Bis denn

Fb

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

32

14.07.2011, 16:31

Wenn du Visual C++ 2010 verwendest kannst du schon den neuen std::unique_ptr statt std::auto_ptr verwenden. Der ist in jeder Hinsicht besser :)

jokester

Treue Seele

Beiträge: 125

Wohnort: Mainz

  • Private Nachricht senden

33

14.07.2011, 16:42

In der Tat kann man keinen auto_ptr in einem STL Container schreiben, geht schon allerdings erhält man dann ein null zurück.

Nee, kompiliert gar nicht erst, weil der Konstruktor für einen const auto_ptr<T>& fehlt. Für Zeiger in Containern kann man auch die boost.ptr_container nehmen.
Der auto_ptr ist in C++0x übrigens auch deprecated, unique_ptr ist ja auch besser, wie dot sagt. GCC kann den nun auch schon seit einiger Zeit.
"There is a theory which states that if ever anyone discovers exactly what the Universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarre and inexplicable. There is another theory which states that this has already happened" -- Douglas Adams.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

34

14.07.2011, 16:46

Und unique_ptr funktioniert auch in Containern :)

35

15.07.2011, 20:14

Meine Fragen sind doch schon längst beantwortet! :pinch:

MfG
Check

36

16.07.2011, 13:25

Die sind schon lange nicht mehr bei dir^^

37

16.07.2011, 15:22

Deshalb ja! :rolleyes:

MfG
Check

Werbeanzeige