Modifier du pointeur this en c++
met15
-
kelm -
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!!:)
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
-
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. -
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; } -
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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.