J'ai ces deux classesconstructeur de copie de base et les classes dérivées
///////////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;
}
je lis que si ma classe dérivée ne pas copier c'tor copy c'tor of the base will be called
mais chaque fois que je reçois conversion from Base to non-scalar type Derived requested
qui a tort? mon compilateur ou mon livre, ou j'ai juste mal compris? merci d'avance
Vous avez probablement mal lu (le constructeur de copie généré par compilateur pour Derived * aussi * copie la partie Base de l'objet, en utilisant le constructeur de copie de Base). - Utiliser le constructeur de copie du parent * à la place * n'a aucun sens: cela signifierait que * par défaut * les objets seront coupés en copiant. – UncleBens