Klassen-methodenproblem



  • Bitte net lachen weil es so banal wahrscheinlich ist und leicht:).Aber ich verstehe 2 Sachen net.
    Warum bekomme ich bei der Displaymethode net bei jedem Farbwert eine 0?
    Macht da was der Konstruktor net richtig?

    Warum funktioniert diese Methode so net?
    ->int RGB_Color::setzeR()
    {
    int r;
    cout<<"Wert fuer Rot angeben: ";
    cin>>r;
    return r;
    }

    Wäre die besser?Wenn ja wie müsste man Sie denn umschreiben? Ich stehe da auf der leitung.
    ->int RGB_Color::setcolor()
    {
    cout<<"Bitte Geben Sie den Rotwert an: ";
    cin>>setR();
    cout<<"\nBitte Geben Sie den Gruenwert an: ";
    cin>>setG();
    cout<<"\nBitte Geben Sie den Rotwert an: ";
    cin>>setB();
    }

    #include <iostream>
    using namespace std;

    class RGB_Color
    {
    private:

    int r,g,b;

    public:

    RGB_Color();
    void getR();
    void getG();
    void getB();
    void display();
    int setR();
    int setG();
    int setB();
    int setzeR();

    };
    //Konstruktor
    RGB_Color::RGB_Color()
    {
    int r=0;
    int g=0;
    int b=0;
    }
    //GETMETHODEN
    void RGB_Color::getR() {cout<<"Der Rotwert der Farbe ist "<<r<<endl;}
    void RGB_Color::getG() {cout<<"Der Gruenwert der Farbe ist "<<g<<endl;}
    void RGB_Color::getB() {cout<<"Der Blauwert der Farbe ist "<<b<<endl;}
    void RGB_Color::display()
    {
    cout<<"Rotwert="<<r<<endl
    <<"Gruenwert="<<g<<endl
    <<"Blauwert="<<b<<endl;
    }

    //SETMETHODEN
    int RGB_Color::setR() {return r;}
    int RGB_Color::setG() {return g;}
    int RGB_Color::setB() {return b;}
    /*int RGB_Color::setcolor()
    {
    cout<<"Bitte Geben Sie den Rotwert an: ";
    cin>>setR();
    cout<<"\nBitte Geben Sie den Gruenwert an: ";
    cin>>setG();
    cout<<"\nBitte Geben Sie den Rotwert an: ";
    cin>>setB();
    }
    **/

    int RGB_Color::setzeR()
    {
    int r;
    cout<<"Wert fuer Rot angeben: ";
    cin>>r;
    return r;
    }

    int main()
    {
    RGB_Color color1;
    color1.setzeR();
    color1.getR();
    fflush(stdin);
    getchar();
    return 0;
    };



  • an welcher stelle übergibst du den werte an RGB_COLOR ?



  • Schüler schrieb:

    Warum funktioniert diese Methode so net?
    ->int RGB_Color::setzeR()
    {
    int r;
    cout<<"Wert fuer Rot angeben: ";
    cin>>r;
    return r;
    }

    was bringt das?

    Schüler schrieb:

    Wäre die besser?Wenn ja wie müsste man Sie denn umschreiben? Ich stehe da auf der leitung.
    ->int RGB_Color::setcolor()
    {
    cout<<"Bitte Geben Sie den Rotwert an: ";
    cin>>setR();
    cout<<"\nBitte Geben Sie den Gruenwert an: ";
    cin>>setG();
    cout<<"\nBitte Geben Sie den Rotwert an: ";
    cin>>setB();
    }

    cin>>setR();
    Wie willst du denn eine Methode einlesen?
    es wäre besser, wenn du es mit referenzen machen würdest...
    dann sollten all deine probleme behoben sein...

    //edit: du brauchst nichtmal referenzen.... 😉 👍



  • wenn dann sollte die klasse so aussehen:

    class RGB_Color 
    { 
    private: 
         int r,g,b; 
    public: 
         RGB_Color();
         void getR(int getRed); 
         void getG(int getGreen); 
         void getB(int getBlue); 
         void display(); 
         int setR(int setRed); 
         int setG(int setGreen); 
         int setB(int setBlue); 
         int setzeR(); //was soll das sein?
    };
    


  • Versuch mal aus dem Konstruktor die "Int's" weg zu nehmen ->

    RGB_Color::RGB_Color() 
    { 
    r=0; 
    g=0; 
    b=0; 
    }
    

    Außerdem legts du in der methode eine neue Variable an->

    int RGB_Color::setzeR() 
    { 
    int r;  //weg mit dieser Zeile
    cout<<"Wert fuer Rot angeben: "; 
    cin>>r; 
    return r; 
    }
    

    Außerdem versteh ich das nicht ganz ->

    int RGB_Color::setR() {return r;} 
    int RGB_Color::setG() {return g;} 
    int RGB_Color::setB() {return b;}
    
    int RGB_Color::setcolor() 
    { 
    cout<<"Bitte Geben Sie den Rotwert an: "; 
    cin>>setR(); 
    cout<<"\nBitte Geben Sie den Gruenwert an: "; 
    cin>>setG(); 
    cout<<"\nBitte Geben Sie den Rotwert an: "; 
    cin>>setB(); 
    }
    

    Das ist völlig unsiinig. Besser->

    /*int RGB_Color::setcolor() 
    { 
    cout<<"Bitte Geben Sie den Rotwert an: "; 
    cin>>r;
    cout<<"\nBitte Geben Sie den Gruenwert an: "; 
    cin>>g;
    cout<<"\nBitte Geben Sie den Rotwert an: "; 
    cin>>b;
    }
    

    Spart jedenfalls Funktionsaufrufe...

    EDIT: lol, in der Zeit, wo ich versuche zu posten, haben schon zwei andere gepostet



  • Ja aber deine war die beste mit Antworten auf meine Fragen. Vielen Dank:)

    Aber nur aus Neugier.Ich weiss das es unsinnig ist. Aber ich will ja nur rumprobieren und testen mit was für verschiedenen Möglichkeiten was möglich ist.

    Wie müsste ich denn schreiben um den eingabewert in die Funktion zu übernehmen?

    int RGB_Color::setR() {return r;}
    int RGB_Color::setG() {return g;}
    int RGB_Color::setB() {return b;}

    int RGB_Color::setcolor()
    {
    cout<<"Bitte Geben Sie den Rotwert an: ";
    cin>>setR();
    cout<<"\nBitte Geben Sie den Gruenwert an: ";
    cin>>setG();
    cout<<"\nBitte Geben Sie den Rotwert an: ";
    cin>>setB();
    }



  • geht nicht.
    K.



  • du kannst KEINE funktion nach 'cin>>' nutzen !!!

    du kannst aber 'cin>>' in eine funktion einbauen:

    int RGB_Color::setR()
    {
       cout << "Geben Sie eine Zahl ein: ";
       cin >> r;
    }
    
    int RGB_Color::setcolor()
    {
        RGB_Color::setR();  //müßt man probieren
    }
    

Anmelden zum Antworten