Supponiamo che io ho questa classe:operatore condizionale nella lista dei membri-inizializzazione
class foo
{
public:
foo() { }
foo(const std::string& s) : _s(s) { }
private:
std::string _s;
};
che è membro di un'altra classe:
class bar
{
public:
bar(bool condition) :
_f(condition ? "go to string constructor" : **go to empty ctor**)
{
}
private:
foo _f;
};
Quando si inizializza _f
in bar
s' elenco di inizializzazione membro vorrei piace scegliere quale costruttore di foo
invocare in base a condition
.
Cosa posso inserire invece di go to empty ctor
per fare in modo che funzioni? Ho pensato di mettere foo()
, c'è un altro modo?
Con C++ 11, consiglierei un costruttore di movimento su un costruttore di copie, ma la tecnica è buona. – Richard
@Richard: non stavo raccomandando un uso esplicito del costruttore di copie (non che ciò sia possibile a mia conoscenza). L'esempio che ho mostrato userà un costruttore di mosse quando appropriato. –