nicht"Gast" schrieb:
> Bei mir gehts korrekt. Wie Kompilierst du das denn?
Kompillieren ja, nicht aber Ausführen.
Dr. Sommer schrieb:
> Cplusplusser schrieb:
>> Test myTestWrong(TestConfig(2,30));
> Die "TestConfig"-Instanz verschwindet nach dieser Zeile sofort, weshalb
> die Referenz myTestWrong.conf ins Nirwana zeigt. Daher ist dieser Code
> fehlerhaft.
Genau, wie ich es mir auch erklärt habe.
> Die einfachste Lösung ist, es so zu benutzen wie du es bereits bei "OK"
> richtig gemacht hast. Alternativ könntest du es mit dynamischer
> Speicherverwaltung machen (siehe Anhang), oder mit shared_ptr. Merke:
> Referenzen in C++ sind fast gleich zu Zeigern, mit dem Unterschied dass
> man das Ziel nicht ändern kann, und man bei der Erstellung auch ein Ziel
> angeben muss.
Dynamisch scheidet leider aus.
>
> PS: Warum verwendest du den C-Header <stdio.h> und nicht den C++-Header
> <cstdio>? Warum verwendest du überhaupt printf und nicht die sichereren
> iostreams?
War im Beispiel bei www.onlinegdb.com schon drin, deshalb habe ich es
gelassen, da es nur um die Klassen ging.
C++ schrieb:
> Entweder du speicherst eine Kopie in der Klasse.
1 | protected:
|
2 | TestConfig conf;
|
Das ist vermutlich die sicherste Lösung. Dann wird allerdings immer 1x
der Defaultconstructor aufgerufen (den es u.U. nicht gibt/geben soll),
das würde ich gerne vermeiden. Kann man das nicht irgendwie verhindern,
dass man bspw. die Instanz innerhalb der Klasse durch eine Kopie der
übergebenen Instanz initialisiert?