Bonsoir à toutes et à tous,
Suite au fil "Accès indirect aux éléments d'une classe" je souhaite récupérer un pointeur sur une classe à sa création.
L'idée est d'utiliser "this".
J'ai trouvé une première manière, mais qui ne me satisfait pas, car je récupère le pointeur justa après la création en appelant un fonction. Cette manière montre que, a priori, on peut utiliser "this". Voici ce que je fais :
Maintenant, je voudrais utiliser ce 'this" à la création du composant, j'écris :
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 class Truc { public: int xx; Truc *getPtr() { return this; } }; Truc *ptrs[10]; // Tableau de pointeur void setup() { ptrs[3] = truc.getPtr(); truc.xx = 421; int b = (*ptrs[3]).xx; // Cela me fournit bien la valeur 421 }
J'ai essayé diverses façons d'écrire cela, mais, soit ça plante à la compilation, soit ça plante à l'exécution, soit encore je n’obtiens pas la bonne valeur.
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 class Truc { class Truc { public: int xx; Truc(Truc *myPtr) { // passage de l'adresse du paramètre myPtr = this; // // je voudrais que le contenu du paramètre soit égal à "this" c'est-à-dire l'adresse de "truc" } }; Truc *ptrs[10]; // tableau de pointeur de type "Truc" void setup() { Truc truc(ptrs[0]); // instanciation de Truc avec le premier élément du tableau en paramètre pour récupérer le pointeur "this" truc.xx = 421; int b = (*ptrs[0]).xx; // je récupère une valeur, mais ce n'est pas 421 ! }
Est-ce la syntaxe qui n'est pas bonne ?
Est-ce que la valeur de this n'est pas encore déterminée au moment où je la demande ?
Merci de votre aide.
Pierre
Partager