tengo esas dos clasesconstructor de copia de base y clases derivadas
///////////BASE CLASS
class Base{
public:
Base(int = 0);
~Base();
Base(Base&);
Base(Derived&); ////<-may be problem here?, note: I tried without this function
int valueOfBase();
protected:
int protectedData;
private:
int baseData;
};
/////////////DERIVED CLASS
class Derived: public Base{
public:
Derived(int);
//Derived(Derived&);
~Derived();
private:
int derivedData;
};
and here my main
int main(){
Base base(1);
Derived derived = base;
return 0;
}
leí que si mi clase derivada no tiene copia c'tor copy c'tor of the base will be called
pero cada vez que reciba conversion from Base to non-scalar type Derived requested
quién está equivocado? mi compilador o mi libro, o simplemente he entendido mal? gracias de antemano
Probablemente haya leído mal (el constructor de copia generado por el compilador para Derived * también * copia la parte Base del objeto, utilizando el constructor de copia de Base). - Usar el constructor de copia del padre * en lugar * no tiene sentido: eso significaría * por defecto * los objetos se cortarán en la copia. – UncleBens