Bonjour,
je crée une classe, on va dire MonInt, et je veux que mes entiers respectent certaines contraintes.
Je crée alors une classe Contrainte qui contient seulement la méthode virtuelle suivante :
et deux classes qui héritent de Contrainte, disons ContrainteMin et ContrainteMax, qui ont juste la méthode verif de définie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part virtual verif(Tableau *);
Je crée ensuite une autre classe : Tableau qui est codée de la manière suivante :
Bref jusqu'ici pas de problème, mais je me dis: "t'es bête les contraintes c'est les mêmes pour tous les objets" et donc je me dis : "mets les en static".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class Tableau { public : ... private : MonInt tab[30]; Contrainte * _cte[2]; }
Ma classe devient :
Là, je me dis comment faire pour avoir une initialisation correcte ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class Tableau { public : ... private : MonInt tab[30]; static Contrainte * _cte[2]; }
Je cherche un peu, j'essaye sur des ints, après des int * et j'en viens à ceci pour l'initialisation :
Je n'ai pas trouvé d'autre méthode pour initialiser mes contraintes. (Je ne suis pas sûr qu'il y en ait d'autre).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Contrainte * _cte[2] = { new ContrainteMin(), new ContrainteMax() }
Mais là je commence à me dire, ok tu as tes contraintes, mais comment tu fais :
1. si le new a envoyé une exception bad_alloc
2. pour faire un delete des Contraintes
Pour le 1, a part mettre un try et a catch à la ligne d'initialisation, je vois pas comment faire.
Pour le 2, je fais un delete avec une fonction qui a un acces a mon tableau de contraintes à la fin du programme principal.
Mais les solutions que j'ai données ne me paraissent pas satisfaisantes du tout.
Je pense que je ne dois pas faire ceci, si ?
Une solution plus élégante consisterait a créer une variable pour chaque contrainte (ici ça va car j'en ai que 2), mais comment faire (si c'est possible) pour garder ce que j'ai avant à savoir un tableau de pointeurs sur des Contraintes.
Merci d'avance.
Bonne journée.
b Oo
Partager