002
02.01.2018, 18:56 Uhr
ao
(Operator)
|
1. in Auto::set_leistung hast du falsch abgeschrieben, die 1 ist ein l (kleines L).
2. Das const-Attribut muss auch in der Klassendefinition hingeschrieben werden:
C++: |
class Auto{ private: unsigned short Leistung; unsigned short Baujahr; unsigned short Hoechstgeschwindigkeit; public: void hupen(); void bremsen(); void fahren(); void set_leistung(unsigned short = 0); void set_baujahr(unsigned short = 0); void set_hoechstgeschwindigkeit(unsigned short = 0); unsigned short get_leistung() const; unsigned short get_baujahr() const; unsigned short get_hoechstgeschwindigkeit() const; };
|
3. Mit "unsigned short = 0" definiert man einen sog. Defaultwert für diesen Parameter. Man kann also z.B. set_leistung (100) aufrufen (um die Leistung auf 100 PS zu setzen), oder man kann set_leistung() ohne Argument aufrufen und setzt damit die Leistung auf den Defaultwert (also 0) - syntaktisch ist beides richtig und wird vom Compiler akzeptiert, aber nur, wenn der Defaultwert hingeschrieben wird. Sonst ist die Angabe des Arguments zwingend.
Hierzu noch eine Anmerkung: Es ist bei weitem nicht in allen Fällen sinnvoll, einen Defaultwert zu vergeben. Dies hier ist so ein Fall. Weder für die Leistung noch für die Höchstgeschwindigkeit gibt es einen sinnvollen Defaultwert, und schon gar nicht 0.
Sinnvoller Default fürs Baujahr wäre vielleicht das aktuelle Jahr. Aber das kriegt man nicht in einen konstanten Ausdruck hinein, oder man muss das Programm jedes Jahr neu übersetzen ...
Wie man sieht, ist es gar nicht so einfach, sich schlüssige Beispielprogramme auszudenken |