J'ai reçu des devoirs à faire connaître le programme sans jeter à l'aide des constructeurs c'est donc mon code, j'ai deux classes:erreur dans C++, dans le contexte
class Base {
protected:
int var;
public:
Base(int var = 0);
Base(const Base&);
Base& operator=(const Base&);
virtual ~Base(){};
virtual void foo();
void foo() const;
operator int();
};
class Derived: public Base {
public:
Derived(int var): Base(var){};
Derived(const Base&);
Derived& Derived::operator=(const Base& base);
~Derived(){};
virtual void foo();
};
ici deux de mes fonctions dérivées:
Derived::Derived(const Base& base){
if (this != &base){
var=base.var;
}
}
Derived& Derived::operator=(const Base& base){
if (this != &base){
var=base.var;
}
return *this;
}
mais j'ai une erreur within context
quand j'appelle ces lignes
Base base(5);
Base *pderived = new Derived(base); //this row works perfectly
Derived derived = *pderived; // I think the problem is here
Merci pour toute aide
"Dans le contexte" est seulement * partie * du message d'erreur. Il doit y avoir des éléments au-dessus de cette ligne pour vous indiquer l'erreur réelle et les éléments sous cette ligne vous indiquant le contexte (c'est-à-dire, le numéro de ligne et le nom de la fonction). –
Savez-vous que 'Derived derived = * pderived;' appelle le constructeur 'Derived :: Derived (const Base & base)'? –
Est-ce par hasard lié à [type non-scalaire demandé] (http://stackoverflow.com/questions/3046463/non-scalar-type-requested/3046537#3046537)? – Troubadour