Petite question en ADA. - Programmation
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
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.