Referenzen in Klassen



  • Hallo zusammen

    wieso kann ich in diesem Programm eine Referenz ohne Compilerfehler
    (aus der Funktion "funktion" zurückgeben, normale int Werte aber nicht??

    class LEAFS
    {
    public:
           int ls;
           int bs;
           int& funktion(int z);
    private:
            int ps;
    };
    
    int& LEAFS::funktion(int z)
    {
    ls = z;
    return ls;
    }
    
    int main(int argc, char* argv[])
    {
    LEAFS sit;
    char var;
    int max = 100;
    sit.funktion(8) = max;//wieso geht das hier als Referenz?
    cout<<max<<" "<<endl;// wenn ich aber aus der Methode funktion nur eine int 
    cout<<sit.ls<<endl;  // Variable zurückgebe bekomme ich einen Compiler Fehler?
    var = getch();
    return 0;
    }
    


  • wenn du eine int-Variable zurückgibst steht bei der Zuweisung als l-value ein Wert dem dann ein anderer Wert zugewiesen werden soll ➡ Quatsch

    Guanin schrieb:

    //was soll diese Methode denn überhaupt tun??
    int& LEAFS::funktion(int z)
    {
    ls = z;
    return ls;
    }

    int main(int argc, char* argv[])
    {
    LEAFS sit;
    int max = 100;
    sit.funktion(8) = max;//was soll diese Zuweisung denn bezwecken???
    cout<<max<<" "<<endl;//
    return 0;
    }

    [/cpp]

    was soll die Methode funktion denn überhaupt tun?? Wenn nur das Attribut ls verändert werden soll dann:

    void LEAFS::funktion(int z)
    {
    ls = z;
    }
    


  • Die Methode hat gar keinen Sinn, sie dient nur zum Test!

    und wieso wird dann bei der Referenz nicht auch der Wert der Variablen zurück-
    gegeben, auf den sie sich bezieht?



  • wenn du eine Referenz zurückgibst, dann kann dies als l-value bei einer Zuweisung dienen, da die zugehörige Variable für sich einen Speicher belegt hat.
    Ist doch klar, daß variable=5 funktioniert und 3=5 nicht 😃


Anmelden zum Antworten