Garbage Collector
-
...
-
tanja im ernst. Hast du so wichtigen Code das du ihn nicht in Teilstücken zeigen kannst? In jedem Thread von dir liest man das du doch bitte mal Code zeigen sollst, doch du ignorierst das komplett.
-
Ich hab jetzt auch keine Lust, mir selbst zusammen zu reimen, was sie da vor Augen hat und welches Problem sie zu lösen versucht. Ohne Code nix los.
-
Nach folgendem Schema :):
void Methode (){ int var1 = 10; string var2 = "Text"; Dichte = 2.3; (Membervariable) if(...) { cerr << .... }
-
um welche Variablen geht es dir und welches Verhalten hättest du gerne? Die lokalen Variablen var1 und var2 werden beim Beenden des Scopes automatisch zerstört. Die Membervariable natürlich nicht. Oder möchtest du, dass die Membervariable auf den vorherigen Wert zurückgesetzt wird?
btw. Ausnahmebehandlung macht man mit Exceptions.
-
@daddy_felix: Gibt es einen Ausnahmefall den man auch ausgeben kann auf dem Bildschirm? Und es geht um die membervariable, genau wie kann man sie wieder auf den wert zurücksetzen? danke

-
tanja.hopfer schrieb:
Gibt es einen Ausnahmefall den man auch ausgeben kann auf dem Bildschirm?
Mir geht es nicht um die Ausgabe, das kannst du gerne mit cerr machen.
tanja.hopfer schrieb:
Und es geht um die membervariable, genau wie kann man sie wieder auf den wert zurücksetzen? danke

void doSomething() { double old_value = member_value; member_value = 55; if (...) { cerr << ... member_value = old_value; } }
-
Danke daddy_felix. Und ansonsten wie volkard sagte ist der Garbage Collector nicht sehr sinnvoll?
-
es gibt in C++ keinen Garbage Collector.
-
Nee ich meinte eigentlich, wie behandelt man solche Sachen in C++ ohne Garbage Collector, gerade weil man ihn nicht zur Verfügung hat?
-
Das Beispiel lässt sich auch elegant mit ScopeGuard lösen. Trotzdem zweifle ich immer noch am Sinn. Wieso willst du die Membervariable wieder zurücksetzen Tanja? Du könntest in der Memberfunktion beispielsweise eine Kopie davon verwenden.
-
tanja.hopfer schrieb:
wie behandelt man solche Sachen
was meinst du mit "solche Sachen"? Mit "new" angelegte Objekte?
Da wurde schon "RAII" und "scoped guards" genannt. Die für den Nutzer einfachste Variante sind "smart pointer".
void doSomething() { bla(); { std::unique_ptr myPtr(new MyClass(1, "hallo")); myPtr->MethodOfMyClass(); } // mit Beenden des Scopes wird die erzeugte Instanz automatisch zerstört blub(); }Generell braucht man "new" aber wesentlich weniger, als man es als JAVA-Umsteiger vermuten könnte

-
Das meinte ich daddy_felix.
Danke.