Programmation objet : aiguillage automatique.

Programmation objet : aiguillage automatique. - Ada - Programmation

Marsh Posté le 03-05-2014 à 03:56:08    

Bonjour, je suis toujours aussi mauvais en programmation orienté objet.
 
J'ai écrit un type abstrait pour lequel j'ai défini une fonction abstraite et je dérive un type concret en implémentant la fonction abstraite mais lorsque j'appelle la procédure gnat me dis :

Citation :

cannot call abstract subprogram


 
Voici la déclaration du type abstrait :

Code :
  1. type Ground_Abstract is abstract tagged null record;
  2. function Status (Ground : in Ground_Abstract'Class) return Game_Status_Type is abstract;


 
Voici la déclaration du type concret :

Code :
  1. type Chess_Ground is new Ground_Abstract with
  2.      record
  3.         Current_Player      : Player_Type := light;
  4.         ...
  5.      end record;
  6. function Status (Ground : in Chess_Ground'class) return Game_Status_Type;


 
Et voici mon appel ligne 18 à la fonction Status :

Code :
  1. function Self_Game(Name : in Games_Type) return Samples_Access is
  2.      Result : Samples_Access;
  3.      Game   : Game_Type;
  4.   begin
  5.  
  6.      case Name is
  7.         when Chess =>
  8.            declare
  9.               Samples : Sample_Vector.Vector;
  10.               System : System_Type;
  11.            begin
  12.               Game.Game := new Games.Chess.Chess_Game;
  13.               if Game.Game = null then
  14.                  raise Program_Error;
  15.               end if;
  16.               Game.Game.Ground := new Games.Chess.Chess_Ground'class ' (Games.Chess.Initialize);
  17.  
  18.               while Game.Game.Ground.Status = Continue loop
  19.                  Games.Chess.To_Play(Game.Game.Ground.all, System);
  20.                  Samples := Samples & Encode(System);
  21.               end loop;


 
Pouvez vous m'aiguiller justement ... Merci pour votre aide.

Reply

Marsh Posté le 03-05-2014 à 03:56:08   

Reply

Marsh Posté le 04-05-2014 à 09:59:53    


jovalise is back
 
:bounce:

Reply

Marsh Posté le 04-05-2014 à 14:02:37    

Tu as implémenté ta fonction dans ton type concret?  
Parce que  
function Status (Ground : in Chess_Ground'class) return Game_Status_Type;
c'est juste la déclaration de la fonction, non?
A+,


Message édité par gilou le 04-05-2014 à 14:03:48

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-05-2014 à 17:58:00    

Affirmatif.

Reply

Sujets relatifs:

Leave a Replay

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