Wo steckt der Fehler beim Konstruktor?



  • Hi!

    Ich habe folgendes geschrieben:

    class Person
    {
     public:
     Konstruktor();
     void show_data();
     void set_adressdata(string, string, string, string);
     void set_salary(string);
    
     private:
     string m_name;
     string m_plz;
     string m_ort;
     string m_strasse;
     string m_tag;
     string m_monat;
     string m_jahr;
     string m_gehalt;
    };
    
    Person::Konstruktor()
    {
    }
    

    Eigentlich genau wie in den Beispielen die ich mir angesehen habe, nun sagt der compiler:

    **
    main.cpp:32: ANSI C++ forbids declaration Konstruktor' with no type main.cpp:49: ANSI C++ forbids declarationKonstruktor' with no type
    **

    Und zwar genau dort wo ich ihn deklariere und dann bei der eigentlichten Funktion. Wo ist der Fehler?



  • Ein Konstruktor muss genauso heißen wie die Klasse. Also Person bzw. Person::Person in deinem Fall.



  • Ah danke!
    Und wozu brauche ich den Destruktor? Wird nicht beim entfernen der Klasse automatisch alles gelöscht? Von daher verstehe ich die Beispiele aus einigen Tutorials nicht, wieso noch extra "Per Hand" löschen?



  • z.B. um Sachen auf dem Heap zu löschen (delete, delete[])



  • Deine Klasse braucht im Moment nichtmal nen selbstdefinierte Konstruktor, der vom Compiler automatisch generierte tut das gleiche (nichts.)

    Aber manchmal forderst du im Konstruktor Resourcen an, die man auch wieder freigeben muss (dynamischer Speicher mit new/new[], Dateien, Datenbankverbindungen, usw.). Dann brauchst du auch einen Destruktor. (Und Kopierkonstruktor und Kopierzuweisungsoperator ebenfalls.)



  • ausserdem können (gerade Destruktoren) wenn man ein cout o.ä. reinschreibt ganz praktisch für die Fehlerdiagnose sein.


Anmelden zum Antworten