Bonjour, je me pense ces derniers sur les types tagged. Et je me posais une question : est-il possible avec l'attribut 'class ou un pointeur sur classe, de disposer d'un objet dont le type pourrait varier ? Exemple, j'ai les classes et méthodes suivantes :
Puis dans mon programme je voudrais avoir ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 type Voiture is tagged record puissance : natural ; marque : string(1..20) ; end record ; function init_voiture(p:natural ; m : string) return Voiture ; procedure rouler(V : Voiture) ; type Limousine is new Voiture with record longueur : float ; end record ; function init_limousine(p:natural ; m : string ; l : float) return limousine ; overriding procedure rouler(V : Limousine) ;
De même, si je déclare MaVoiture comme étant de type Voiture'class, est-il possible d'écrire ensuite MaVoiture.rouler sans avoir à spécifier de quelle méthode rouler je parle ? Bref, comment faire pour que le choix de la méthode se fasse à l'exécution et non à la compilation ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 put_line("voulez-vous une voiture ou une limousine?"); get(choix) ; skip_line ; if choix = 'L' then MaVoiture := init_limousine(...) ; else MaVoiture := init_voiture(...) ; end if ;
Merci d'avance.
Partager