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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 virtual verif(Tableau *);
et deux classes qui héritent de Contrainte, disons ContrainteMin et ContrainteMax, qui ont juste la méthode verif de définie.
Je crée ensuite une autre classe : Tableau qui est codée de la manière suivante :
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];
}
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".

Ma classe devient :
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];
}
Là, je me dis comment faire pour avoir une initialisation correcte ?
Je cherche un peu, j'essaye sur des ints, après des int * et j'en viens à ceci pour l'initialisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Contrainte * _cte[2] = { new ContrainteMin(), new ContrainteMax() }
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).

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