2010-10-03 3 views
0

je créé une classe:c'tor de base avec l'argument dérivé

class Base{ 
public: 
Base(int = 0); 
~Base(); 
Base(Base&); 
Base(Derived&); //<- here 
int valueOfBase(); 
protected: 
int protectedData; 
private: 
int baseData; 
}; 

class Derived: public Base{ 
public: 
    Derived(int = 0); 
    Derived(Derived&); 
    ~Derived(); 
private: 
    int derivedData; 
}; 

###//Impplementation in .cpp 

Base::Base(Base& base) 
{ 
    baseData = base.baseData; 
    protectedData = base.protectedData; 
    cout << "base Copy C'tor" << endl; 
} 

Base::Base(Derived& hello) 
{ 
    baseData = hello.protectedData; 
} 

mais quand je tente de compiler un code Je reçois un Erro (près here)

expected) before & token 

puis-je créer la base c avec un argument dérivé pour écrire quelque chose comme ça

Derived derived(1); 
Base base1 = derived; 

sinon pourquoi? merci d'avance

+1

Plus où est la définition de 'Derived'? –

+0

@Prasoon Saurav: est-ce correct, ou est-ce que je manque quelque chose? – rookie

+1

Vous devez fournir la déclaration avant de la classe 'Derived'. Voir la réponse de JoshD. –

Répondre

1

Vous avez probablement besoin d'une déclaration avant de Derived.

Essayez d'ajouter class Derived;-dessus de votre définition de la classe de base. Je ne vois pas les définitions des constructeurs/destructeurs

+0

merci beaucoup, j'ai toujours des problèmes avec – rookie

Questions connexes