bonjour oui tout est dans le titre je souhaiterias savoir comment puis je passer this en parametre d'une fonciton. merci![]()
bonjour oui tout est dans le titre je souhaiterias savoir comment puis je passer this en parametre d'une fonciton. merci![]()
Salut,
Dans une fonction membre de la classe elle-même, this est passé de manière implicite (tu n'a rien à faire, le compilateur s'en charge pour toi)
S'il s'agit de passer this à une fonction non membre de la classe, tu dois, tout simplement, le passer sous la forme d'un pointeur vers la classe correspondante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 /* just to make the compiler knows that MyClass exists */ class MyClass; void myFunction(MyClass * mc) { mc->foo(); } class MyClass { public: void foo() { /* this is well known by this function but can (in most cases) be * omitted : */ this->bar() ; /* should have exactly the same behaviour than */ bar(); } private: void bar(){/* ... */} void doSomething(){ myFunction(this);} };
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
merci pour ta reponse j'ai essayer de l'appliquer pour un constructeur
ex :
le compilateur bloque sur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class Classe1{ Classe1::Classe1(Classe2 *c2){ } } class Classe2{ Classe2::Classe2(){ Classe1 *c1 = new Classe1(this); } }
mais ca ne fonctionne pas j'ai peut etre oublié quelque chose?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Classe1 *c1 = new Classe1(this);
Il faut considérer que this n'est pas disponible dans le contructeur, vu que tu es en train de créer l'objet.
arf oui mon exemple n'est pas bon je vais posté le vrai code ^^
la classe moteur
la classe calculateur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Moteur::Moteur() { } void Moteur::lancerCalculateur(){ Calculateur* calcul = new Calculateur(this); }
oups désolé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Calculateur::Calculateur(Moteur *mot) { ...... }![]()
this renvoie un pointeur constant.
Partager