Modifier du pointeur this en c++

met15 -  
 kelm -
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. Nanolenain Messages postés 76 Statut Membre 11
     
    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
  2. cherche_toujours_un_pseudo
     
    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
  3. met15
     
    D'accord,possible mais peu conseillé:),Merci beaucoup!
    0
  4. kelm
     
    sauf que ici, c'est pas l'adresse de this qui change mais juste la valeur pointée
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. loupius Messages postés 789 Statut Membre 148
     
    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