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. 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
          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