Kann Methode auf Member zugreifen?



  • Hi,
    Ich habe mir eine schöne Klasse mit einer schönen Methode geschrieben. In dieser Methode will ich auf ein Member der Klasse zugreifen

    class KLASSE
    {
        public:
            int test1;
            int test2;
    
            int AddNumber ()
            {
                return test1 + test2;
            }
    };
    

    Das Problem ist, dass ich die Methode eben, obwohl keine Parameter übergeben worde, mit den Variablen der Klassen arbeiten lassen will. Die einzige Möglichkeit, die ich bisher gefunden habe, ist der Methode eine Klasse übergeben zu lassen, also

    class KLASSE
    {
        public:
            int test1;
            int test2;
    
            int AddNumber (KLASSE kl)
            {
                return kl.test1 + kl.test2;
            }
    };
    
    int main ()
    {
        KLASSE klasse, k2;
        klasse.test1 = 4;
        klasse.test2 = 5;
        std::cout << k2.AddNumber (klasse);
    
        return 0;
    }
    

    Weiß jemand, wie ich auf die Member in einer Methode der gleichen Klasse zugreifen lassen kann, ohne diese übergeben zu müsssen?

    DIV Ominion



  • Hallo,

    Wo ist jetzt dein Problem? Deine erste Methode sollte doch funktionieren. Sofern deine Klassenmethode nicht statisch ist hast du vollen Zugriff auf die membervariablen.



  • Hallo

    In Memberfunktionen kannst du auch auf Membervariablen zugreifen. Du solltest allerdings darauf achten, denn Varibalen vorher einen Wert zuzuweisen, wenn du mit Ihnen arbeitest.

    chrische



  • Ist es möglich, dass es nicht möglich ist, wenn man mit eine Variable arbeitet die private ist? Weil ich nähmlich gar nicht daran gedacht habe, dass es daran liegen könnte. Es funktioniert jetzt, wenn ich das private-Member rausnehme.

    Mfg Ominion

    EDIT: ich sage jetzt nichts dazu...eine Variable hatte keinen Wert...danke an euch beide, jetzt funktioniert meine Klasse.

    EDIT2: ich habe zwar nen Konstruktor, aber die eine habe ich nicht definieren lassen, weil der Wert komplett User spezifisch ist...



  • Hallo

    Wie bereits geschrieben, ist es egal, welche Zugriffsbeschränkung für die Variable gilt. Du kannst in Memberfunktionen auf jeden Fall darauf zugreifen. Sonst hätten diese Variabeln auch keinen Sinn.

    chrische



  • Diese Zugriffsbeschränkungen gelten auch nur, wenn du die Klasse von außen betrachtest (das schließt bei private abgeleitete Klassen mit ein).

    PS:

    EDIT2: ich habe zwar nen Konstruktor, aber die eine habe ich nicht definieren lassen, weil der Wert komplett User spezifisch ist...

    Dann bau dir doch einen Ctor, der den Wert als Parameter übergeben bekommt:

    class KLASSE
    {
    public:
      int test1;
      int test2;
    
      int AddNumber ()
      {
        return test1 + test2;
      }
    
      KLASSE(int val)
      : test1(0),test2(val) {}
    };
    

Anmelden zum Antworten