Anfängerfrage, kann Methode nicht aufrufen



  • #include <iostream>
    using namespace std;
    class Auto{
        private:
            int leistung;
            char schadstoffklasse;
            string hersteller;
        public:
            Auto(){}
            Auto(char schadstoffklasse, string hersteller){
                this -> schadstoffklasse = schadstoffklasse;
                this -> hersteller = hersteller;
                this -> leistung = 0;
            }
            void setLeistung(int leistung){
                this -> leistung = leistung;
            }
            int getLeistung(){
                return leistung;
            }
            void getInfo(){
                cout << "Hersteller: "       << hersteller       << endl;
                cout << "Schadstoffklasse: " << schadstoffklasse << endl;
            }
    };
    int main(){
        Auto auto_a('A',"Nissan");
        Auto auto_b('B',"Ford");
        Auto auto_c('C',"BMW");
        auto_a.setLeistung(275);
        auto_b.setLeistung(1120);
        auto_c.setLeistung(150);
    
        Auto garage[2];
        garage[0] = auto_a;
        garage[1] = auto_b;
        garage[2] = auto_c;
        for(int i = 0; i < 3; i++){
            garage[i].getInfo();
            cout << "Leistung: " << garage[i].getLeistung() << endl;
            cout << endl;
        }
        int max = 0;
        int index = 0;
        for(int i = 0; i < 3; i++){
            if(garage[i].getLeistung() > max){
                max = garage[i].getLeistung();
                index = i;
    
            }
        }
        cout << "meiste Leistung " << index << "tes Auto." << endl;  
        cout << garage[index].getLeistung() << endl;
      //cout << garage[index].getInfo() << endl;     // <----------
    }
    

    - drei Auto´s in Array Garage
    - Auto mit höchste Leistung gesucht
    - Stelle im Array an der das Auto mit höchsten Leistung steht wird ausgegeben (gespeichert in index)
    Wieso kann ich für das Auto mit der höchsten Leistung die Methode getInfo() nicht aufrufen ? (auskommentierte Stelle)

    Ansonsten funktioniert alles..



  • Zeile 53 macht genauso wenig Sinn.

    Die beiden Methoden sind Methoden, die nichts zurückgeben. Das kannst du nicht so ohne weiteres ausgeben.
    Zumal in den Methoden Ausgaben stattfinden.

    Edit: Wer lesen kann, ist klar im Voteil 😣



  • Das Prog funktioniert wie es soll ohne Zeile 54.
    Zeile 53 funktioniert aber, Zeile 54 nicht. Wo ist der Unterschied ?



  • string einbinden nicht vergessen.



  • Patrick85 schrieb:

    Zeile 53 funktioniert aber, Zeile 54 nicht. Wo ist der Unterschied ?

    Der Unterschied ist void.



  • Skym0sh0 schrieb:

    Zeile 53 macht genauso wenig Sinn.

    Die beiden Methoden sind Methoden, die nichts zurückgeben. Das kannst du nicht so ohne weiteres ausgeben.
    Zumal in den Methoden Ausgaben stattfinden.

    Zeile 53 macht Sinn....
    In Zeile 54 versuchst du etwas vom Typ void (also nichts) auszugeben. Das klappt natürlich nicht. Ruf die Funktion einfach so auf, die Ausgabe findet ja schon in der Funktion statt.



  • Ahhhhhhh 🙄 danke.



  • Auto garage[2]; //Mehrere Autos sind eine Garage?
    


  • wtfomg schrieb:

    Auto garage[2]; //Mehrere Autos sind eine Garage?
    

    Und btw: in die "garage" passen nur zwei Autos rein, du parkst da aber drei drin.


Anmelden zum Antworten