This->



  • Hey ich bin ganz neu hier und will auch nur schnell was wissen,
    weiß nicht vielleicht stehts hier auch schon drin aber ich hab keine Zeit im Moment nachzusehen.

    Also wozu braucht man denn in C++ den this-> Zeiger?

    Ich mein wenn ich private Elemente in meiner Klasse habe, dann kann ich doch auch Ohne this-> mit einer Methode der Klasse darauf zugreifen?!
    Oder braucht man den wo anderst?

    VIELEN DANK SCHONMAL



  • Manchmal magst du halt das aktuelle Objekt kennen.

    zB wenn du das Objekt an eine Funktion uebergeben willst:

    Class obj;
    foo(obj);
    

    soweit, so klar nicht?

    nun, was wenn ich foo() aber in einer methode von Class aufrufen will?

    void Class::call_foo() {
      foo(*this);
    }
    

    siehe auch: http://tutorial.schornboeck.net/this.htm



  • Hallo

    du kannst this benutzen um Member von gleichnamigen Parametern zu trennen.
    und du kannt es verwenden wenn du die aktuelle Instanz (eben this) als Parameter an eine andere nicht zu dieser Klasse gehörenden Funktion übergeben willst.

    bis bald
    akari



  • Damit kannst du zB anderen Objekten einen Zeiger auf die Klasse selber liefern oder einfach nur um klarzumachen welche Variable/Funktion du wirklich meinst, falls zB ein Parameter den gleichen Namen hat.

    edit: Wieder mal zu langsam 🙄



  • Hi,

    man braucht es z.B. auch in Sonderfällen. 😛
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-150456.html

    MfG Eisflamme



  • Da gibt es ein paar Anwendungsfälle:

    • Wenn du in einer Methode das aktuelle Objekt zurückgeben möchtest: MyClass & MyClass::me() { return *this; }
    • Wenn du die Adresse von dir selbst haben möchtest: std::cout << this << std::endl; if (this == &other) { }
    • Wenn du einen Operator deiner Klasse aufrufen möchtest: (*this)[i];
    • Wenn du in einem template auf einen public/protected Member einer Basisklasse zugreifen möchtest: this->basis_member = 2;


  • Ich Danke euch echt, das hat mir sehr geholfen! Vielen Dank dafür!



  • Zitat:

    Wenn du in einer Methode das aktuelle Objekt zurückgeben möchtest: MyClass & MyClass::me() { return *this; }

    dieses *this, wie kann ich das interpretieren?
    Weiß diese Funktion damit schon das das Objekt gemeint ist?
    oder muss da irgendwo noch der Objektname hin?

    VIELEN DANK SCHONMAL 👍



  • B_ schrieb:

    Zitat:

    Wenn du in einer Methode das aktuelle Objekt zurückgeben möchtest: MyClass & MyClass::me() { return *this; }

    dieses *this, wie kann ich das interpretieren?
    Weiß diese Funktion damit schon das das Objekt gemeint ist?
    oder muss da irgendwo noch der Objektname hin?

    VIELEN DANK SCHONMAL 👍

    Wie würde man so eine Methode aufrufen?

    instanz.me();

    Damit ist klar, welches Objekt man bekommt. So eine me() Methode ist aber sinnlos, viel eher gibt man das Objekt zurück wenn man Aufrufe verketten will.

    So ist es zum Beispiel normal operator=() mit return *this; zu beenden. Oder wenn man Parameter setzt gibt man manchmal *this zurück und kann dann schreiben:

    instanz.setWidth(3)
           .setAlignment(Left)
           .setFont(Kruskal);
    

Anmelden zum Antworten