Supposons que j'ai cette classe:Opérateur conditionnel dans la liste-initialisation des membres
class foo
{
public:
foo() { }
foo(const std::string& s) : _s(s) { }
private:
std::string _s;
};
Ce qui est membre d'une autre classe:
class bar
{
public:
bar(bool condition) :
_f(condition ? "go to string constructor" : **go to empty ctor**)
{
}
private:
foo _f;
};
Lors de l'initialisation _f
dans la liste d'initialisation de membre de bar
Je voudrais aime choisir quel constructeur de foo
pour invoquer basé sur condition
.
Que puis-je mettre au lieu de go to empty ctor
pour que cela fonctionne? J'ai pensé à mettre foo()
, y a-t-il un autre moyen?
Avec C++ 11, je recommanderais un constructeur de mouvement sur un constructeur de copie, mais la technique est bonne. – Richard
@Richard: Je ne recommandais pas une utilisation explicite du constructeur de copie (pas que ce soit possible à ma connaissance). L'exemple que j'ai montré utilisera un constructeur de déplacement, le cas échéant. –