Bonjour,
Je suis débutant en ADA , et j'ai un souci concernant les pointeurs.

Voici le fichier.ads
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
	Type Pointeur  is access   Objet'Class ;
 
 
	   Type Cellule ; 
	    Type Ptr_Cellule is access Cellule ; 
	   Type Cellule is 
 
	   record 
	    Element : Pointeur ; 
 
	   Suivant : Ptr_Cellule ; 
 
	   end record ; 
	     Function Moment_Total (La_Liste : in Ptr_Cellule ) return Float ;
et là le fichier.adb
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
 
	 Function Moment_total (La_Liste :  in Ptr_Cellule ) return Float is 
 
	      Local: Ptr_Cellule ;
 
	       Resultat : Float := 0.0 ; 
	        begin 
	        Loop 
		 if Local = Null then                                
                   return Resultat ; 
 
                      end if ; 
 
		 Resultat := Resultat + Moment(Local.Element.all ) ;
		 Local := Local.Suivant ; 
 
		 end Loop ;
 
	  end Moment_total ;
Voici le code que je cherche à exécuter pour calculer le moment total d'un ensemble d'objet de classe composé de cercle , triangle , et polygone.Le moment par composant individuel j'arrive à le calculer et ça marche dans un autre fichier qui ne nous interésse pas ici.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
With ES_Simples , Geometrie ; 
 
Procedure Objet_Pointant is 
 
use ES_Simples , Geometrie ; 
                        -- Pointeurs
 
		   C_p ,T_p ,  P_p :  Pointeur ;
 
 
		   -- Pour former la Liste Chainees.
		     L1 : Ptr_Cellule := new Cellule' (C_p , Null ) ;
 
		   L2 : Ptr_Cellule := New Cellule'(T_p  , L1 )  ; 
 
		   L3 : Ptr_Cellule := New Cellule' (P_p , L2 ) ; 
 
		   La_Liste : Ptr_Cellule ; 
 
		   M_Total : Float ; 
 
 Begin 
 
		    Afficher ("--------Pointeurs-------------------") ; 
 
 
			Saut_Ligne ;
 
			La_Liste := L1 ; 
 
		       Afficher("Moment_total = ") ;
 
 
		        M_Total := Moment_total(La_Liste) ;
 
		       Afficher( M_Total ) ;
 
			Saut_Ligne ;
 
		      end Objet_Pointant ;
La compilation donne :
[CODE]

$ gcc -c Objet_Pointant.adb
Objet_Pointant.adb:3:11: warning: file name does not match unit name, should be "objet_pointant.adb"
Objet_Pointant.adb:10:20: warning: "C_p" is never assigned a value
Objet_Pointant.adb:10:25: warning: "T_p" is never assigned a value
Objet_Pointant.adb:10:32: warning: "P_p" is never assigned a value
gnatbind -x Objet_Pointant.ali
gnatlink Objet_Pointant.ali
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Et l'exécution du code.<code>Moment_total =  0.00000E+00
Le souci c'est comment affecter des valeurs aux pointeurs C_p , T_p , P_p pour qui font références à cercle , Triangle , et Polygone qui appartiennent à Objet'Class pour calculer le moment total.
Ne vous interressez pas à ES_Simples qui marche et permet la lectures et l'affichage de données.
Merci d'avance pour vos réponses.
c urgent.