Outils pour utilisateurs

Outils du site


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);
}

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.1583338472.txt.gz · Dernière modification : 2020/03/04 17:14 de root