C++ This

Da Andreabont's Wiki.

Il this è, all'interno di una classe, il puntatore alla classe stessa.

Shared from this

Se un oggetto è contenuto in uno shared pointer non può tornare il suo this da un metodo, altrimenti violerebbe l'astrazione dello shared pointer con comportamenti indesiderati. E' possibile ritornare però uno shared pointer di this, che condivide il reference counter con lo shared pointer originale. Per farlo è necessario ereditare da std::enable_shared_from_this:

class Miaclasse : public std::enable_shared_from_this<Miaclasse>
{
    std::shared_ptr<Miaclasse> getptr() {
        return shared_from_this();
    }
};

Implementazioni

Concatenare i metodi

E' possibile, da un metodo di un oggetto ritornare una reference di this, in modo che si possa concatenare più metodi sulla stessa riga. Questa tecnica è equivalente a fare più chiamate su righe diverse, ma va usata con cautela in quanto può introdurre confusione nel codice.

class myclass {

public:

    int counter = 0;

    myclass& add(int n) {
        this->counter += n;
        return *this;
    }

};


int main() {
    myclass i;
    i.add(1).add(2).add(3);
}