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 invalidKann 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 abgeleitetMir 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.