static class members deleten
-
//file: foo.hpp class Foo { private: static int* i; };
//file: foo.cpp int Foo::i(new int(42)); ...
Wo und Wann muss ich Foo::i deleten?
-
Raptor schrieb:
Wo und Wann muss ich Foo::i deleten?
Du bist bei beidem nicht festgelegt. Du musst nur sicherstellen, dass du danach nicht mehr darauf zugreifst. Aber warum muss es überhaupt ein Zeiger sein?
-
MFK schrieb:
Raptor schrieb:
Wo und Wann muss ich Foo::i deleten?
Du bist bei beidem nicht festgelegt. Du musst nur sicherstellen, dass du danach nicht mehr darauf zugreifst. Aber warum muss es überhaupt ein Zeiger sein?
Weil ich einen Zeiger brauche.
-
Raptor schrieb:
Weil ich einen Zeiger brauche.
Warum brauchst du einen Zeiger?
Mir fällt kein Anwendungsfall ein, bei dem du einen statischen Zeiger, den du gleich beim Programmstart mit einem int aus dem Free Store initialisierst, nicht durch einen statischen int (bzw. dessen Adresse) ersetzen könntest.
-
Raptor schrieb:
MFK schrieb:
Raptor schrieb:
Wo und Wann muss ich Foo::i deleten?
Du bist bei beidem nicht festgelegt. Du musst nur sicherstellen, dass du danach nicht mehr darauf zugreifst. Aber warum muss es überhaupt ein Zeiger sein?
Weil ich einen Zeiger brauche.
du könntest einen smart pointer nehmen, z.b. auto_ptr<int>, der kümmert sich um den rest.
Mir fällt kein Anwendungsfall ein, bei dem du einen statischen Zeiger, den du gleich beim Programmstart mit einem int aus dem Free Store initialisierst, nicht durch einen statischen int (bzw. dessen Adresse) ersetzen könntest.
amen. es sei denn, das objekt, auf dass der zeiger zeigt, kann nur auf dem free store existieren.