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

Nanolenain Messages postés 72 Date d'inscription   Statut Membre Dernière intervention   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
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
met15
 
D'accord,possible mais peu conseillé:),Merci beaucoup!
0
kelm
 
sauf que ici, c'est pas l'adresse de this qui change mais juste la valeur pointée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   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