Modifier du pointeur this en c++

Fermé
met15 - 6 déc. 2010 à 16:05
 kelm - 18 févr. 2012 à 19:35
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!!:)
A voir également:

5 réponses

Nanolenain Messages postés 72 Date d'inscription lundi 6 décembre 2010 Statut Membre Dernière intervention 3 février 2012 11
6 déc. 2010 à 16:12
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
6 déc. 2010 à 18:28
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
D'accord,possible mais peu conseillé:),Merci beaucoup!
0
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 dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
6 déc. 2010 à 18:09
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