Kopierkonstrukter auf Adresse des neuen Objektes



  • Ahh ok habe den fehler gefunden. Hat ein "str" von der Klammer gefehlt ^^

    Jetzt bleibt nur noch die frage ob die aufgabe richtig gelöst ist ^^



  • Gab es denn ein Vorgabe für die Aufgabe? Im Aufgabentext lese ich etwas von ZEICHENKETTE und STRING. Du hast jetzt ein Zeichen (nur ein char) implementiert.

    Ansonsten bist du auf dem richtigen Weg.



  • Also die vorgabe stand ganz oben. Das ist was vorgeben war. Aber alle beispiele sind immer nur mit int oder char. Deswegen habe ich es erstmal so porbiert um es ertsmal zum laufen zu bekomme. Jetzt muss ich nur noch alles in string umwandeln. ^^



  • höhöhö es läuft ^^

    Jetzt die Aufgabe richtig gelöst?

    #include <iostream>
    #include <string>
    #include <vector>
    
    using namespace std;
    
    class Test {
    
    private:
    	string str;
    	string * pStr;
    
    public:
    	Test (string);
    	string getString() {
    		return str;
    	}
    
    Test(Test &const);
    
    void datenAus();
    
    };
    
    Test::Test(string iWert): str(iWert), pStr(&str){
    
    }
    
    Test::Test(Test & objekt):str(objekt.str), pStr(&str){
    }
    
    void Test::datenAus() {
    	cout <<"str = " << str << ", pStr = " << pStr << endl;
    }
    
    int main() {
    
    Test k21("Hallo");
    Test k22(k21);
    k21.datenAus();
    k22.datenAus();	
    	return 0;
    }
    


  • Nah dran!

    Du hast den Tipp von Nexus nicht beachtet.

    Sowohl innerhalb der Klassendefinition als auch in der Definition des Copy-Konstruktors ist der const-Qualifier nicht ganz korrekt angewendet.

    Ansonsten ist das OK. Hat sich doch gelohnt es selbst zu versuchen, was?



  • Hallo,

    wie kann es sein das dein Beispiel läuft 😕

    Naja, egal. Für mich stellen sich hier ein paar Fragen. Die erste ist wohl, ob du den Unterschied zwischen char, char*, char[], string und string* kennst 😃

    Test(Test &const);
    

    @kritiker: Wieso speichert er eigentlich den Zeiger und den Typ ab?



  • Mir macht das ja spaß hätte nur nmicht gedacht das ich es in der Zeit schaffe. Das mit dem const habe ich eh noch nicht so ganz verstande. Naja dann mal weiter zur nächsten aufgabe 😃



  • hui99 schrieb:

    Das mit dem const habe ich eh noch nicht so ganz verstande. Naja dann mal weiter zur nächsten aufgabe

    Mal sehen, wie weit du mit der Einstellung kommst, bzw. wie oft du den gleichen Fehler noch machen wirst... 🙄

    Wenn es ein gutes Buch ist, sollte es schon erklärt haben, was es mit dem const auf sich hat. Und ansonsten hindert dich niemand daran, weitere Recherchen anzustellen. Zumindest hat es keinen Wert, eine Klasse zu schreiben, von der man über die Hälfte nicht versteht (wie Siassei sagte, auch die Typen solltest du noch einmal genauer anschauen)...



  • Ahhh ok ich glaube jetzt habe ich es mit dem const, naja mein super neuste compiler version (Visual c++ 6.0) gibt mir keine fehler aus. Davor gab es immer eine warnung: "Anachronismus verwendet: Qualifizierer auf Verweise werden ignoriert"

    Aber die ist jetzt auch behoben.

    Hier noch mal der Quellcode. Hoffe jetzt ist wirklcih alles richtig.

    #include <iostream>
    #include <string>
    #include <vector>
    
    using namespace std;
    
    class Test {
    
    private:
    	string str;
    	string * pStr;
    
    public:
    	Test (string);
    	string getString() {
    		return str;
    	}
    
    Test(const Test& objekt);
    
    void datenAus();
    
    };
    
    Test::Test(string iWert): str(iWert), pStr(&str){
    
    }
    
    Test::Test(const Test & objekt):str(objekt.str), pStr(&str){
    }
    
    void Test::datenAus() {
    	cout <<"str = " << str << ", pStr = " << pStr << endl;
    }
    
    int main() {
    
    Test k21("Hallo");
    Test k22(k21);
    k21.datenAus();
    k22.datenAus();	
    	return 0;
    }
    


  • @Hui99
    👍 Jetzt hast du es. Und nicht auf den Compiler schimpfen, der hat dich ja darauf hingewiesen. VC9 hätte dir identisch geantwortet. 🙂
    Vielleicht würde noch etwas "Ordung" im Quelltext guttun.

    @Siassei
    Wus? Wo?


Anmelden zum Antworten