Modifier du pointeur this en c++

Bonjour,

Voici ma question,Est il possible de modifier l'adresse du pointeur this en c++?

J'ai essayé de le modifié en lui passant l'adresse d'un objet du même type et le compilateur me dit:lvalue required as left operand of assignment.J'ai contourner le pb en passant par un objet temporaire,mais j'aimerais tout de même comprendre.

Ex:

Voiture * Une_voiture;
this=Une_voiture; //ERREUR!

Merci de m'aider!!:)

5 réponses

  1. De ce que je sais, c'est quelque chose que tu ne peux et ne DOIS pas faire. le this et langage objet (le c++ aussi par conséquent) pointe sur l'objet auquel appartient la fonction que tu utilise. Il ne peut donc pas pointer sur autre chose.
    Mais je peux me tromper. Attends d'autres avis.
    0
    1. Comme ci-dessus précisé, 'this' pointe sur un objet de classe.
      Si cette classe est nommée 'C', 'this' sera ainsi défini par le compilateur (et caché par celui-ci):
      C * const this = &objet;
      Il est donc ensuite impossible de le redéfinir et ... c'est tant mieux.
      Bonne continuation.
      -1
      1. Salut,
        voici un code où l'adresse de this est modifié...mais en effet pas de grand interet pour du code....
        #include <iostream>
        
        using namespace std;
        class Example_Class
        {
            private :
            int x;
            int y;
        
            public :
            Example_Class();
            ~Example_Class();
            void change_adrr();
            void affiche();
        };
        
        Example_Class::Example_Class() //Constructor for the C++ tutorial
        {
            x = 22;
            y = 0;
        }
        Example_Class::~Example_Class() //destructor for the C++ Tutorial
        {
        
        }
        void Example_Class::change_adrr()
        {
            this->x++;
            this->y += 20;
            this->affiche();//affiche 23 et 20
            Example_Class* t = new Example_Class();
            *(this) = *t;
            this->affiche();//affiche 22 et 0
        }
        void Example_Class::affiche()
        {
            cout<<this->x<<endl<<this->y<<endl;
        
        }
        int main()
        {
            Example_Class l;
            l.change_adrr();
            return 0;
        }
        
        0
        1. D'accord,possible mais peu conseillé:),Merci beaucoup!
          0
          1. sauf que ici, c'est pas l'adresse de this qui change mais juste la valeur pointée
            0