Petite question en ADA.

Petite question en ADA. - Programmation

Marsh Posté le 11-12-2001 à 12:27:16    

Alors voila il s'agit de faire une gestion des avl (mais bon c'est pas ca le plus important):
Dans les package ads j'ai un type prive un_avl:
    type un_avl is limited private;
 
puis:
    type Un_Avl is limited private;
    -- Ajouter un element au bon endroit
    procedure Insere_Avl (V : in Integer;
                          A : in out Un_Avl);  
    -- Visualisation d?un AVl
 
    private
    -- Un type pour definir si on est a gauche ou a droite avl
    type Direction is (Gauche, Droite);
    type Noeud; -- Declaration du type noeud
    type Un_Avl is access Noeud; -- Declaration du pointeur sur un noeud
    type Tab_Fils is array (Direction) of Un_Avl; -- Tableau de pointeurs
    type Noeud is record -- Structure d?un noeud
       Contenu : Integer;
       Hauteur : Natural := 0;
       Descendance : Tab_Fils := (others => null);
    end record;
end Gestion_Avl;
 
Alors la question porte sur le type un_avl, par exemple dans le fichier adb, je dois faire une sous-fonction recalcule_hauteur, qui prends en parametre un_avl et qui doit recalculer sa hauteur.
Mais pour acceder aux structures du noueud comment je fais?
Par exemple si a est mon parametre de type un_avl, pour changer la structure hauteur du noeud qu'il pointe, je fais  
a.Hauteur := nouvelle_hauteur (une constante), c'est cela?
 
En fait j'ai pas trops compris le truc des limited private.
Merci de me repondre.

Reply

Marsh Posté le 11-12-2001 à 12:27:16   

Reply

Marsh Posté le 11-12-2001 à 19:00:31    

Personnes? :(

Reply

Marsh Posté le 11-12-2001 à 23:51:40    

houlala, c'est vieux tout ca !! :)
 
d'après mes (tres) vieux souvenir, ce que tu dis doit fonctionner. Sauf que je me demande si c'est bien le point pour accéder à la valeur pointée par un pointeur. C'est pas '->' comme en C ??
 
le coup des limited private, il me semble que c'est pour dire que tu ne peux rien faire avec le type sans passer par les fonctions qui lui sont dédiées.
private = pas le droit d'accéder à sa structure
limited private = pareil mais pas le droit de faire d'affectation ni de comparaison non plus (sauf si tu les redéfinies)
 
voila. bon je suis pas du tout sur de ce j'ai dit, mais doit y avoir un fond de vérité la dedans ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed