Zugriff auf private Datenelmente



  • Hi, ich bin absoluter Anfänger und ich möchte ein Programm schreiben (mit Klassen) , mit dem dem ich das Volumen verschiedener Koerper ausrechne und dann die Daten auf dem BS ausgebe.

    Ich möchte z.B. in der Klasse Koerper folgendes privates Datenelement anlegen:
    bool korrig; //"true" , wenn der Koerper nicht mehr in das Koordinatensystem
    // passt

    Meine Frage ist: Wie kann ich in main() auf die privaten Datenlemente zugreifen und den Wert der privaten Datenelmente verändern? Die Klasse soll in einer extra Headerdatei angelegt werden und nicht irgendwie in "main()" sein.

    Danke im voraus



  • zum beispiel über den konstruktor setzen und dann "set und get" methoden benutzen, die privaten membervariablen zu ändern



  • Wie elise richtig gesagt hat, über den Konstruktor und/oder getter und setter Methoden, die public sind.

    Beispiel:

    class Koerper
    {
    public:
        Koerper(bool korrig);
        void setKorrig(bool value);
    private:
        bool korrig;
    };
    
    Koerper::Koerper(bool korrig)
    {
        this->korrig = korrig;
    }
    
    void Koerper::setKorrig(bool value)
    {
        korrig = value;
    }
    

    in deiner main-Methode bzw. woanders, wo du vorher deinen Koerper instanzierst, kannst du dann entsprechend den Wert ändern bzw. initialisieren.

    void function()
    {
         Koerper k;
         k.setKorrig(true):
    }
    


  • Koerper::Koerper(bool korrig) 
    { 
        this->korrig = korrig; 
    }
    

    Wobei man hier das this-> weglassen kann.



  • *** schrieb:

    Koerper::Koerper(bool korrig) 
    { 
        this->korrig = korrig; 
    }
    

    Wobei man hier das this-> weglassen kann.

    Nein, kann man nicht.

    denn das lokale korrig verdeckt die Membervariable korrig.
    Hier wuerde ich einfach die Initialisierungsliste verwenden


Anmelden zum Antworten