Ich bin ein C++ Anfänger. Ich habe gelernt, wie abgeleitete Klasse Konstruktor als Klassenmitglied zu definieren:Wie definiere ich den Nicht-Member-Konstruktor einer abgeleiteten Klasse (innerhalb der Klassenkopfzeile)
class A{
...
public:
A(params){}
};
class B :public A{
...
public:
B(param1OfA, param2OfA, params) :A(param1OfA, param2OfA){}
};
Nun, dachte ich, das gleiche Prinzip für Dritt Definition der abgeleiteten Klasse Konstruktor arbeiten würde auch:
class A{
...
public:
A(params);
}
A::A(params){};
class B :public A{
...
public:
B(param1OfA, param2OfA, params) :A(param1OfA, param2OfA);
};
B::B(param1OfA, param2OfA, params) :A(param1OfA, param2OfA){}
sondern, erhalte ich diesen Fehler in Visual Studio:
1> Source.cpp
1>d:\webdev\c++\godina ii - parcijala-i\aa-vjezba-polimorfizam\source.cpp(63): error C2969: syntax error : ';' : expected member function definition to end with '}'
1>d:\webdev\c++\godina ii - parcijala-i\aa-vjezba-polimorfizam\source.cpp(67): error C2144: syntax error : 'std::string' should be preceded by ')'
1>d:\webdev\c++\godina ii - parcijala-i\aa-vjezba-polimorfizam\source.cpp(67): error C2630: ';' found in what should be a comma-separated list
1>d:\webdev\c++\godina ii - parcijala-i\aa-vjezba-polimorfizam\source.cpp(67): error C2612: trailing 'type' illegal in base/member initializer list
1>d:\webdev\c++\godina ii - parcijala-i\aa-vjezba-polimorfizam\source.cpp(84): fatal error C1004: unexpected end-of-file found
Warum definieren Sie den Konstruktor zweimal? –
@ πάνταῥεῖ Wenn Sie auf das zweite Beispiel (Nichtmitglied) und die Verwendung von geschweiften Klammern nach der Konstruktordeklaration im Abschnitt 'public' verweisen, waren das die Tippfehler beim Kopieren der ersten Beispiele. Ich habe diese entfernt. – developer10