Je travaille actuellement sur les références en C++ qui permettent d'accéder aux variables ...
J'étudie en particulier les fonctions retournant une référence.
Mais ce code ne fonctionne pas :
double x, y;
double& maxi(double& a, double& b)
{
return a > b ? a : b ;
}
void setup() {
Serial.begin(115200);
Serial.print(++maxi(5, 6));
}
void loop() {}
Je devrai avoir le chiffre 7 qui s'affiche dans le moniteur série
Mais j'ai des erreurs à la compilation :
D:\Utilisateur\Documents\Arduino\Cpp_reference\Cpp_reference.ino: In function 'void setup()':
Cpp_reference:11:25: error: cannot bind non-const lvalue reference of type 'double&' to an rvalue of type 'double'
Serial.print(++maxi(5,6));
^
D:\Utilisateur\Documents\Arduino\Cpp_reference\Cpp_reference.ino:3:9: note: initializing argument 1 of 'double& maxi(double&, double&)'
double& maxi(double& a, double& b)
^~~~
exit status 1
cannot bind non-const lvalue reference of type 'double&' to an rvalue of type 'double'
La carte sur COM15 n'est pas disponible
Bon je suis un peu fatigué à cause de mes sorties en forêt ...
Merci pour votre indulgence.
Bonne soirée.
PC : notre compilateur ne les gére peut-être pas ou j'ai pas bien compris !
double x, y;
double& maxi(double& a, double& b)
{
return a > b ? a : b ;
}
void setup() {
Serial.begin(115200);
x = 5;
y = 6;
Serial.print(++maxi(x, y));
}
void loop() {}
En fait, la première version de mon programme effectue un passage par valeur ce qui constitue un non sens. Une fonction C++ peut retourner une référence, du coup elle est capable de retourner une variable (la preuve ++maxi) ! mais les paramètres de la fonction doivent necessairement être passés par référence et non pas par valeur.
Les paramètres formels de la fonction initialisent les références : (double& a, double& b)
Les paramètres rééls quant à eux affectent des valeurs à des variables qui sont ensuite référencées par la fonction. :
x = 5;
y = 6;
les paramètres réels et les paramètres formels ne constituent plus qu’une seule entité. Les paramètres formels référencent les paramètres réels
c'est un processus indispensable ...
Voilà ce que je comprends mais est-ce vraiment correct ?
Il y en a des centaines mais les conditions sont difficiles cette année (sécheresse = bruits, pas d'herbe hors forêt et les biches ne sortent que rarement avec les cerfs..) donc c'est plus compliqué car le brame ne se passe qu'en forêt, les animaux sortent rarement et je n'ai pas le droit d’entrer dans les parcelles ...