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 [2020/03/04 17:14] – Déplacement de auto vers sa page root | lang:cpp:variable [2025/02/06 10:12] (Version actuelle) – Ajout de "Variable optionnelle" root | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ===Initialisation complexe | + | ====Déclaration des variables==== |
+ | ===Pointeur sur la méthode | ||
- | Plutôt que | + | {{gh> |
+ | |||
+ | Exemple avec une fonction utilisant des template avec auto déduction. Dans ce cas, il faudra faire un cast pour donner le type des éléments déduits. | ||
<code cpp> | <code cpp> | ||
- | std::string str; | + | struct S5 { |
- | if (i == 1) | + | template < |
- | str = "un"; | + | void f(U&& |
- | else if (i = 2) | + | |
- | str = "deux"; | + | |
- | else | + | }; |
- | | + | |
+ | auto ptr = static_cast< | ||
</ | </ | ||
- | écrire | + | [[https:// |
+ | |||
+ | ===Variable optionnelle=== | ||
+ | |||
+ | Création une variable '' | ||
<code cpp> | <code cpp> | ||
- | const std::string str = [& | + | std::conditional_t< |
- | { | + | |
- | if (i == 1) | + | |
- | return " | + | |
- | else if (i == 2) | + | |
- | return " | + | |
- | else | + | |
- | return " | + | |
- | }(); | + | |
</ | </ | ||
- | ===Pointeur sur la méthode d'une classe=== | + | ====Programmation fonctionnelle==== |
- | <code cpp> | + | |
- | // La classe | + | |
- | class Classe | + | |
- | { | + | |
- | public: | + | |
- | // Pas ici. | + | |
- | const Classe* function(size_t i) const | + | |
- | { return this; } | + | |
- | // Ici. | + | |
- | const Classe* function2(size_t i) const | + | |
- | { return this; } | + | |
- | }; | + | |
- | int main() | + | ===Initialisation complexe d'une constante=== |
- | { | + | |
- | // Le pointeur de nom ptr. | + | Plutôt que |
- | | + | |
- | | + | {{gh> |
- | | + | |
- | } | + | écrire |
+ | |||
+ | {{gh> | ||
+ | |||
+ | ====Erreurs==== | ||
+ | |||
+ | * '' | ||
+ | |||
+ | Parfois, il n'est pas possible de faire: | ||
+ | |||
+ | <code cpp> | ||
+ | int i; | ||
+ | int& j = i; | ||
</ | </ | ||
- | ===Pointer vers une classe template depuis une classe sans template=== | + | Il faut alors soit passer par une référence constante : |
- | Il faut mettre | + | |
<code cpp> | <code cpp> | ||
- | struct BaseExample { | + | int i; |
- | | + | const int& j = i; |
- | | + | </ |
- | }; | + | |
- | template < | + | ou passer par un pointeur |
- | struct Example | + | |
- | // .. | + | <code cpp> |
- | BaseExample | + | int i; |
+ | int* j = &i; | ||
</ | </ | ||
- | [[https:// | + | [[https:// |
lang/cpp/variable.1583338472.txt.gz · Dernière modification : 2020/03/04 17:14 de root