1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| #include <UTFT.h>
UTFT myGLCD(ITDB32S, 38, 39, 40, 41);
extern uint8_t SmallFont[];
class Truc { // ma classe
public:
int xx;
int fct(int yy);
};
int Truc::fct(int yy) { // la fonction fct qui retourne le carré du paramètre
return yy*yy;
}
Truc truc; // une instance de Truc
Truc *ptr = &truc; // un pointeur sur truc
Truc *ptrs[10]; // un tableau de 10 pointeurs
Truc bidule; // une deuxième instance de Truc
void setup() {
// put your setup code here, to run once:
myGLCD.InitLCD(PORTRAIT); // initialisation de l'afficheur
myGLCD.clrScr();
myGLCD.fillScr(VGA_WHITE);
myGLCD.setFont(SmallFont);
myGLCD.setColor(VGA_BLACK);
myGLCD.setBackColor(VGA_WHITE);
truc.xx = 55; // je donne une valeur à truc.xx
myGLCD.print(String(truc.xx), CENTER, 20); // je l'affiche -> OK
int b = 0;
b = (*ptr).xx; // transfert de la valeur truc.xx dans b via le pointeur ptr
myGLCD.print(String(b), CENTER, 30); // je l'affiche -> OK
myGLCD.print(String((*ptr).fct(33)), CENTER, 40); // j'active la fonction et j'affiche le résultat -> OK
bidule.xx = -99; // je donne une valeur à bidule.xx
ptrs[0] = &bidule; //le premier élément du tableau pointe sur l'instance bidule
// NOTEZ : il n'y a plus d'étoile devant ptrs pour que cela fonctionne ???
b = 0;
b = (*ptrs[0]).xx+10; // transfert dans b
myGLCD.print(String(b), CENTER, 50); // affichage -> OK
ptrs[1] = &truc; // même chose avec le deuxième élément du tableau
b = 0;
b = (*ptrs[1]).xx-20;
myGLCD.print(String(b), CENTER, 60); // ça marche toujours
(*ptrs[1]).xx = 100; //inversement, je transfert dans l'instance truc la valeur 100
myGLCD.print(String(truc.xx), CENTER, 70); // je l'affiche -> OK
}
void loop() {
// put your main code here, to run repeatedly:
} |
Partager