lang:cpp:variable
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
lang:cpp:variable [2025/02/06 10:12] – Ajout de "Variable optionnelle" root | lang:cpp:variable [2025/07/28 10:36] (Version actuelle) – Précision sur l'utilisation de la lambda dans "Initialisation complexe d'une constante" root | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====Déclaration des variables==== | ====Déclaration des variables==== | ||
+ | ===Pointeur sur méthode vs std:: | ||
+ | |||
+ | '' | ||
+ | |||
+ | De même, il faut préfixer par un '' | ||
+ | |||
+ | <code cpp> | ||
+ | #include < | ||
+ | |||
+ | int main() { | ||
+ | auto funcPtr = +[] {}; | ||
+ | static_assert(std:: | ||
+ | void (*funcPtr2)() = [] {}; | ||
+ | static_assert(std:: | ||
+ | // funcPtr3 est un std:: | ||
+ | auto funcPtr3 = [] {}; | ||
+ | // error: static assertion failed | ||
+ | static_assert(std:: | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | [[https:// | ||
+ | |||
===Pointeur sur la méthode d'une classe=== | ===Pointeur sur la méthode d'une classe=== | ||
Ligne 18: | Ligne 41: | ||
[[https:// | [[https:// | ||
+ | |||
+ | ===Pointeur de pointeur=== | ||
+ | |||
+ | <code cpp> | ||
+ | struct Z { | ||
+ | int z; | ||
+ | }; | ||
+ | |||
+ | struct A { | ||
+ | Z* i; | ||
+ | }; | ||
+ | |||
+ | struct B { | ||
+ | A a; | ||
+ | }; | ||
+ | |||
+ | int main() { | ||
+ | auto ptr1 = &B::a; | ||
+ | auto ptr2 = &A::i; | ||
+ | |||
+ | B b; | ||
+ | |||
+ | // Bien mettre les parenthèses | ||
+ | int z = (b.*ptr1.*ptr2)-> | ||
+ | } | ||
+ | </ | ||
===Variable optionnelle=== | ===Variable optionnelle=== | ||
Ligne 39: | Ligne 88: | ||
{{gh> | {{gh> | ||
- | ====Erreurs==== | + | <WRAP center round info 60%> |
- | + | Bien noter que la lambda est exécutée tout de suite avec un '' | |
- | * '' | + | </WRAP> |
- | + | ||
- | Parfois, il n'est pas possible de faire: | + | |
- | + | ||
- | <code cpp> | + | |
- | int i; | + | |
- | int& j = i; | + | |
- | </ | + | |
- | + | ||
- | Il faut alors soit passer par une référence constante : | + | |
- | + | ||
- | <code cpp> | + | |
- | int i; | + | |
- | const int& j = i; | + | |
- | </ | + | |
- | + | ||
- | ou passer par un pointeur : | + | |
- | + | ||
- | <code cpp> | + | |
- | int i; | + | |
- | int* j = &i; | + | |
- | </code> | + | |
- | [[https:// |
lang/cpp/variable.1738833156.txt.gz · Dernière modification : de root