PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : std::tr1::shared_ptr<T> und Arrays


AlSvartr
2010-09-04, 19:57:07
Hallo zusammen,

mein Kopf raucht gerade ein bisschen, bin schon den ganzen Tag am basteln und jetzt stoße ich auf folgende Frage(n):

Ist es richtig, dass ich bei einem std::tr1::shared_ptr<T>, wenn er auf ein Array zeigt, einen eigenen "ArrayDeleter" mitgeben muss, damit delete [] statt delete aufgerufen wird?
Wichtiger: Wird der Deleter immer mitkopiert, wenn ich den shared_ptr kopiere bzw. zuweise?


Vielen Dank schonmal...steh grad echt auf dem Schlauch... ;(

Chris Lux
2010-09-04, 20:14:22
1. richtig
2. ja der deleter wird mit kopiert

besser boost::shared_array [1] nehmen, da spart mich sich das.

[1] http://www.boost.org/doc/libs/1_44_0/libs/smart_ptr/smart_ptr.htm

AlSvartr
2010-09-04, 20:37:34
Hm, muss ich mal sehen...falls ich Boost noch anderweitig brauchen kann, werde ich das wohl machen, ansonsten krieg ich das aber auch mit dem shared_ptr hin, denke ich, und halt dafür die Abhängigkeiten geringer ;)

Danke dir!

ScottManDeath
2010-09-04, 22:56:53
Oder shared_ptr<vector<T>> oder shared_ptr<array<T,N>>

Coda
2010-09-05, 14:59:37
Hm, muss ich mal sehen...falls ich Boost noch anderweitig brauchen kann, werde ich das wohl machen, ansonsten krieg ich das aber auch mit dem shared_ptr hin, denke ich, und halt dafür die Abhängigkeiten geringer ;)
Boost kann man immer brauchen ;)

Das ist auch alles Header only, brauchst also nix kompilieren.

Chris Lux
2010-09-05, 15:22:10
Boost kann man immer brauchen ;)
boost.... braucht man immer ;)

ich will gar nicht mehr ohne.

AlSvartr
2010-09-06, 06:58:26
Ok, ich glaub ihr habt mich..zumindest in speziellen Fällen werd ichs wohl einsetzen (verdammt, nochmal mehr umbauen, nachdem grad erst von stinknormalen Raw- zu Smartpointern gewechselt wurde :D)