Klasse die sich selbst als Pointer sieht
-
Achso cool danke.
MfG
Scarabol
-
Das Rad, was du jetzt erfindest, wird ecking sein. Wenn Du es hinsichtlich
Flexibilität und Benutzungsfehleranfälligkeit "abrundest", wird dann so etwas wie boost::scoped_ptr oder std::unique_ptr rauskommen. Die haben all die Kinderkrankheiten nicht mehr. Letzteren smart pointer gibt's offiziell leider noch nicht, kommt aber in der nächsten C++ Version.
-
Bei scoped_ptr macht mich folgender Satz stutzig:
T * operator->() const; // never throws
Returns the stored pointer. Behavior is undefined if the stored pointer is 0.Soll also heißen, dass die Klasse auch nicht so perfekt ist oder?
MfG
Scarabol
-
Scarabol schrieb:
Soll also heißen, dass die Klasse auch nicht so perfekt ist oder?
Wie? In welchem Kontext soll die Dereferenzierung eines Nullzeigers erlaubt sein?
-
Es soll ja nicht erlaubt sein, aber ein assert währe doch sehr wünschenswert finde ich.
MfG
Scarabol
-
Da wird mit Sicherheit ein assert drin sein. Aber was macht man im Release-Modus? Denn ein Fall für eine Exception ist es m.E. nicht.
-
Im Release macht man einfach gar nichts. Speicherzugriffsverletzung, Ende.
Im Release ist ein assert ja leer.
-
Genau. Und deswegen ist es eben UB und keine Imperfektion der Klasse.
-
Doch
Erst wenn im Debug alles klappt, schaltet man i.d.R. auf Release um, und im Release sollte die bestmögliche Performance möglich sein
-
Nichts anderes sagt ipsec. Natürlich ist eine Klasse nicht schlecht, wenn sie im Release-Modus bei falscher Benutzung UB erzeugt.
-
Ok, das habe ich dann wohl falsch gelesen, sorry.