Bonsoir à tous
J'ai une classe mère : SecteurDActivite, et 5 classes filles (Agroalimentaire, Energie, Industrie, Tourisme, Transport). J'ai crée un pointeur S de SecteurDActivite de taille 5 que j'ai initialisé comme suit:
Code :
- // Création des secteurs dactivités:
- Agroalimentaire agroalimentaire(nombreDePeriode);
- Energie energie(nombreDePeriode);
- Industrie industrie(nombreDePeriode);
- Tourisme tourisme(nombreDePeriode);
- Transport transport(nombreDePeriode);
- // Création du pointeur de secteur d'activités:
- SecteurDActivite* S=new SecteurDActivite[nombreDeSecteurDActivite];
- S[0]=agroalimentaire;
- S[1]=energie;
- S[2]=industrie;
- S[3]=tourisme;
- S[4]=transport;
|
J'ai une méthode que je dois utiliser pour chaque secteur d'activité, mais qui est différente pour chaque secteur.
Dans la classe SecteurDActivite je l'ai donc créé en virtual et je n'ai rien mis dedans :
Code :
- class SecteurDActivite :
- {
- virtual void calculImpactAleas(int periode, Aleas A, Entreprise* E, Marche* M){};
- };
|
et je l'ai ensuite mise dans chacune des classes filles avec une implémentation différente.
Cependant lorsque j'execute mon programme principale dont la partie du code intéressante est la suivante :
Code :
- for (int s=0; s<nombreDeSecteurDActivite; s++) S[s].calculImpactAleas(i, alea, E, M);
|
le programme utilise la méthode de la classe SecteurDActivite, et non celles des classes filles, comme le montre l'execution du programme ( j'ai mis des cout<<endl<<__PRETTY_FUNCTION__<<"adr objet : "<<this; dans l'implémentation des méthodes)
virtual void SecteurDActivite::calculImpactAleas(int, Aleas, Entreprise*, Marche*)adr objet : 0x83502b4
virtual void SecteurDActivite::calculImpactAleas(int, Aleas, Entreprise*, Marche*)adr objet : 0x835030c
virtual void SecteurDActivite::calculImpactAleas(int, Aleas, Entreprise*, Marche*)adr objet : 0x8350364
virtual void SecteurDActivite::calculImpactAleas(int, Aleas, Entreprise*, Marche*)adr objet : 0x83503bc
virtual void SecteurDActivite::calculImpactAleas(int, Aleas, Entreprise*, Marche*)adr objet : 0x8350414
Pouvez-vous m'aider s'il vous plait?
Je vous remercie d'avance