Ho il seguente scenario:Calling diversi costruttori della classe di base a seconda del valore del parametro di ingresso
A seconda del valore di ingresso al costruttore di una classe Derived
ho bisogno di chiamare un altro costruttore di Base
classe.
Come ad esempio:
struct Base
{
Base() : v(0) {}
Base(int _v) : v(_v) {}
int v;
};
struct Derived
{
Derived(int v) /* if v == 42 call Base() else call Base(int) */ {}
};
int main()
{
Derived f2(42);
Derived f1(1);
}
con il mio attuale conoscenza di C++ credo che questo non è possibile, quindi chiedo alla comunità se sono a conoscenza di alcun hack, o il codice sporco che renderanno questo possibile. Si prega di non lasciare che il semplice int
s ti guidi, lo scenario di vita reale è molto più complesso. Sentiti libero di mescolare in magia C++ 11.
Modifica: Inoltre, non voglio utilizzare una funzione "init" che a seconda del valore del parametro inizializza in modo diverso le cose.
Beh, probabilmente si tratta di una codifica hardcoded nella responsabilità dei concstructors. Quindi probabilmente ti piacerebbe usare Factory per ottenere la base inizializzata corretta. – senfen