Konstruktorproblem bei Vererbung



  • Hallo Forum,
    Mein aktueller Compiler: MinGW
    Folgendes Problem:

    Ich habe ein paar Klassen, die miteinander verwandt sind.
    Und zwar wird class2 von class1 abgeleitet.

    Laut rororo's "C++ Objektorientiertes Programmieren von Anfang an" muss im Konstruktor der abgeleiteten Klasse (also class2) ein Konstruktoraufruf der Basisklasse erfolgen... Das soll dann so aussehen

    class2::class2(int val) : class1(val)
    {
        //  Konstruktor der abgeleiteten Klasse
    }
    

    das mag mein compiler aber überhaupt nicht 😞

    Compilerausgabe schrieb:

    testapp.cpp:16: error: new types may not be defined in a return type
    testapp.cpp:16: note: (perhaps a semicolon is missing after the definition of `class2')
    testapp.cpp:16: error: return type specification for constructor invalid

    Kann mir da jemand helfen?



  • Die Klassendefinition wär interessant.



  • mehr code.



  • das hab ich in zwei header gepackt

    class1
    {
        private:
            int id ;
            char name[20] ;
    
        public:
            class1(int i) ;
    } ;
    
    class2 : public class1
    {
        private:
            int age ;
    
        public:
            class2(int val) ;
    } ;
    

    die cpp zu class1 spar ich mir mal, die fuktioniert

    class2.cpp:

    class2::class2(int val) : class1(val)
    {
        //  Konstruktor der abgeleiteten Klasse
    }
    

    ich hab das ganze mal ein bisschen vereinfacht der übersichtlichkeit halber
    es fehlt definitiv kein semikolon 😞



  • Wir wärs mit class class1 und class class2 : public class1?



  • das würde ja heißen das class1 von class2 abgeleitet wurde oder?
    es ist aber class2 von class1 abgeleitet



  • daersc schrieb:

    das würde ja heißen das class1 von class2 abgeleitet wurde oder?
    es ist aber class2 von class1 abgeleitet

    Mir gings eher um das Schlüsselwort class.

    class class1
    {
    };
    
    class class2 : public class1
    {
    };
    


  • ach so 😃
    dann gehts doch tatsächlich...
    jetzt hängt der compiler aber an einer ganz anderen stelle 😃
    aber das gehört nicht mehr in den thread rein
    danke 🙂



  • daersc schrieb:

    ...
    jetzt hängt der compiler aber an einer ganz anderen stelle...

    Kleiner Tipp: Gewöhn Dir gleich die Sichtweise an: "...Jetzt habe ich noch an anderer Stelle einen Fehler gemacht..."
    Es geht nicht darum, einen unwilligen, tyrannischen, willkürlichen, ... Compiler zu üerreden, sondern darum, ein korrektes Programm zu schreiben. Der Compiler ist lediglich ein Werkzeug, das man dabei verwenden kann.

    Oder wie ein (sehr erfahrener) Kollege immer so schön sagt: "Kaum macht man's richtig, schon funktioniert's!" 😉

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Oder wie ein (sehr erfahrener) Kollege immer so schön sagt: "Kaum macht man's richtig, schon funktioniert's!" 😉

    Du arbeitest doch nicht etwa in Iserlohn?
    Den Spruch gibt's nämlich in unserer Firma auch.



  • Belli schrieb:

    Simon2 schrieb:

    Oder wie ein (sehr erfahrener) Kollege immer so schön sagt: "Kaum macht man's richtig, schon funktioniert's!" 😉

    Du arbeitest doch nicht etwa in Iserlohn?
    Den Spruch gibt's nämlich in unserer Firma auch.

    Ne in Münster ... aber schön zu sehen, dass solche Weisheiten überregional gelten. 😃

    Gruß,

    Simon2.


Anmelden zum Antworten