Tengamos clase como esta:¿Cómo evitar los constructores de código repetitivo?
struct Base {
Base() { ... }
Base(int) { ... }
Base(int,string) { ... }
...
};
me gustaría heredar muchas clases de Base
, así que escribir
struct Son : public Base {
Son() : Base() { }
Son(int) : Base(int) { }
Son(int,string) : Base(int,string) { }
};
struct Daughter : public Base {
Daughter() : Base() { }
Daughter(int) : Base(int) { }
Daughter(int,string) : Base(int,string) { }
};
y yo no es necesario añadir ningún código para los constructores del niño. ¿Es posible heredarlos implícitamente? Para llamarlos de la misma manera que en Base
, ¿solo cambia el nombre? El preprocesador se puede abusar aquí, pero ¿hay alguna otra solución?
C++ 11 tiene delegar constructores. – 111111
Sugerencia salvaje: ¿podrías considerar agregar algunos argumentos predeterminados (cuidadosamente seleccionados)? 'Daughter (int i = 0, string s =" Hello "): Base (i, s)' sería un solo constructor. –
@ 111111: ¡Genial! ¿Podría darme un enlace o un ejemplo? –