lang:cpp:variable
Ceci est une ancienne révision du document !
Initialisation complexe d'une variable constante
Plutôt que
std::string str; if (i == 1) str = "un"; else if (i = 2) str = "deux"; else str = "trois";
écrire
const std::string str = [&i]() { if (i == 1) return "un"; else if (i == 2) return "deux"; else return "trois"; }();
Pointeur sur la méthode d'une classe
// 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() { // Le pointeur de nom ptr. const Classe* (Classe::*ptr)(size_t i) const = &Classe::function2; Classe C; (C.*ptr)(2); }
Connaître le type d'une variable auto à la compilation
Cela se fait en lisant le message d'erreur à la compilation.
template<class Type> struct S; int main() { auto x = ...; S<decltype(x)>(); }
Message d'erreur possible (le type est le template de la structure S) :
utilisation du type non défini 'S<const std::list<unsigned char> &>'
Retrieving the type of auto in C++11 without executing the program Archive du 26/06/2014 le 18/12/2019
Pointer vers une classe template depuis une classe sans template
Il faut mettre une interface commune sans template à la classe template.
struct BaseExample { virtual void do_stuff() = 0; virtual ~BaseExample() {} }; template <typename T> struct Example : BaseExample { ... }; // .. BaseExample *obj;
How can I declare a template pointer without knowing the type? Archive du 21/11/2011 le 18/12/2019
lang/cpp/variable.1581460452.txt.gz · Dernière modification : 2020/02/11 23:34 de root