|
|
|
|
Salut a tous
voila je prog un monopoly en c++ et j ai (parmis d autres) deux classes qui heritent d une troisieme :
Bonus et Propriete qui heritent de Case
voila j aimerai, lorsque j appelle le constructeurs de Case, je regarde si c une Propriete ou un Bonus (entree de lutilisateur pour le moment)
et que selon la reponse, un Bonus ou une Propriete soit construite(donc que this ne soit pas une Case mais une Propriete).
Sauf que qd on appelle le constructeur de Propriete par ex, vu que ca herite de Case, ca appelle le constructeur de Case.
Comment faire ? (virtual?, ou?) (rem : j aimerai garder l'heritage)
voila ce que j ai deja fait mais c,comme vous le comprendrez, completement bete.
Case::Case()
{
cout<<"Nom case ?\n";
cin >> nom;
cout << "Propriete ou Bonus (p / b)\n";
char c;
cin >> c;
if (c=='p')
{
Propriete();
}
if (c=='b')
{
Bonus();
}
}
Tu sais les constructeurs et destructeurs ne st pas des methodes coe les autres,ils st juste appeles a la construction et destruction d'1 objet, et donc je ne vois pas l'interet d'en appeler un a la main puisq le langage s'en charge et je ne sais meme pas si on peut.On appelle le constructeur et destructeur a la main q ds le cas de ceux de constructeur et destructeur d'1 fils(on appelle les constructeurs des classes meres).
|
Tu ne devrais pas ecrire :
|
Ok merci a tout le beau monde qui m a repondu, j ai tout bien compris, mais voila alors; comment faire ca:
|
Tu sais quand t'as une classe mere, toute instance de cette classe peut recevoir une instance d'une de ces classes derivées.Donc, tu declares au debut ton tableau de 40 cases et apres suivant la reponse de l'utilisateur, tu initialiseras propriete ou bonus, et don ccoe c'est a l'execution qu'on qoi initialiser, alors je te conseille d'utiliser un tableau de pointeurs sur ta classe de base.Ds tous chacune des cases de ton tableau pourra contenir indiferemment une instance propriete ou bonus.
|
Je ne sais pas quel genre d'exemple tu veux mais attends. Par ex:
|
Ouais ok, merci bcp : ca avance.
|
D'abord je dois dire q floverdevel t'as repondu et que je pense q ce qu'il a dit te suffira car il t'a montre comment declarer ta fonction acheter(par consequent cette fct n'attend plus de parametres car elle est integree a la classe utilisatrice).De 2 , pour le bleme d'appel, qd une fct a pour parametre un pointeur, elle reçoit egalement a l'appel un pointeur ie q tu devais ecrire
|
Salut,
|