Was muss ich anpassen?



  • Hallo,

    was muss ich im folgenden Code anpassen?

    #include <iostream>
    
    using namespace std;
    
    struct Punkt
    {
    int x;
    int y;
    };
    
    class Rechteck
    {
    public:
        Punkt p;
        double laenge;
        double breite;
    
        Rechteck() // Konstruktor macht nichts
        {
        }
    
        double flaeche(const Rechteck &Objekt)
        {
        return Objekt.laenge * Objekt.breite;
        }
    
    };
    
    int main()
    {
    
    Rechteck Objekt;
    
    // Rechteckdaten einlesen
    cout << endl << " Rechteckdaten einlesen " << endl;
    cout << "x = ";
    cin >> Objekt.p.x;
    cout << " y = ";
    cin >> Objekt.p.y;
    cout << " laenge = ";
    cin >> Objekt.laenge;
    cout << " breite =";
    cin >> Objekt.breite;
    
    cout << endl;
    
    cout << endl << " Flaeche des Rechtecks: ";
    cout << Objekt.flaeche();
    
    cout << endl << endl;
    
    cin.get();
    
    return 0;
    
    }
    

    danke ūüôā



  • Um was zu erreichen?



  • class Rechteck 
    { 
    public: 
        Punkt p; 
        double laenge; 
        double breite; 
    
        Rechteck() // Konstruktor macht nichts 
        { 
        } 
    
        double flaeche() 
        { 
        return laenge * breite; 
        } 
    
    };
    


  • Das Ziel ist eigentlich die Referenz einzubauen..
    nur weiß nicht was ich noch ändern soll

    @Zeus

    so wie du das machst ist das dann call by value ist will aber call by reference ūüôā



  • Woher kommen solche 'bl√∂de' Ziele? Call by void ist weder by value noch by reference.



  • es ist eine √ľbung aus einem buch...
    daher w√ľrde ich gerne wissen was ich √§ndern muss damit es funktioniert mit der referenz



  • Wie hei√üt die Aufgabe im Wortlaut?



  • die funktion flaeche() √ľbernimmt ads Rechteck-Objekt, dessen Fl√§che sie berechnen soll, via call-by-value. das ist unn√∂tig und ineffizient. sinnvoller w√§re es, das objekt via call-by-refernce zu √ľbergeben (um den Kopieraufwand zu verringern) und den Funktionsparameter als const zu deklarieren (um sicherzustellen, dass das objekt nicht versehentlich von der funktion ver√§ndert wird



  • Sieht doch gel√∂st aus?



  • ja dann kommt aber immer als fehler das.. flaeche keine parameter anehmen kann..
    da es ja eine const ist was muss ich wo ändern damit es läuft?



  • cout << Objekt.flaeche(Objekt);
    

Log in to reply