Cannot convert 'bruch' to 'int' in return?



  • Hallo zusammen,
    ich bin komplett neu hier im Forum und das hier ist mein erster Beitrag
    als verzeiht mir falls etwas nicht stimmen sollte.
    Ich studiere und habe erst seit 2 Monaten Programmieren in c++
    Nachdem ich einen Denkfehler hab und einfach nich drauf komme bitte ich euch um Hilfe:

    #include <iostream>
    using namespace std;
    
    struct bruch {
        int zaehler;
        int nenner;};
    
    int bplus(bruch x, bruch y)
    {
    
    bruch result;
    result.nenner = x.nenner*y.nenner;
    result.zaehler = x.zaehler*y.nenner+y.zaehler*x.nenner;
    
    return result;
    
    }
    
    int main () {
    
        bruch opd1 = {0,1};
        bruch opd2 = {0,1};
    
    cout << "Bitte geben Sie Zaehler und Nenner 1 ein:" << endl;
    cin >> opd1.zaehler >> opd1.nenner;
    
    cout << "Bitte geben Sie Zaehler und Nenner 2 ein:" << endl;
    cin >> opd2.zaehler >> opd2.nenner;
    
    cout << bplus(opd1, opd2) << endl;
    
    }
    

    Hierbei bekommen ich folgende Fehlermeldung:

    Cannot convert 'bruch' to 'int' in return?

    Wie man erkennen kann nehme ich zurzeit das Kapitel Funktionen durch.
    Mir ist bewusst dass return nur einen Wert zurück geben kann aber wie löse ich dann dieses Problem sonst?

    Vielen Dank schon mal!
    Swoop



  • int bplus(bruch x, bruch y)
    

    Hier ist int als Rückgabewert deklariert, du gibst aber ein struct zurück.
    Richtig:

    bruch bplus(bruch x, bruch y)
    

    Und nein, return kann auch andere typen zurückgeben.

    ps.:
    Damit das mit dem cout funzt, bräuchtest du sowas:

    ostream& operator<<(ostream& os, const bruch& dt)
    {
        os << dt.zaehler<< '/' << dt.nenner;
        return os;
    }
    


  • ok danke für die antwort nur leider hab ich das noch nicht gelernt
    aber trotzdem danke !



  • na jetzt haste es doch gelernt 🙂


Anmelden zum Antworten