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 :
type Ground_Abstract is abstract tagged null record; function Status (Ground : in Ground_Abstract'Class) return Game_Status_Type is abstract;
|
Voici la déclaration du type concret :
Code :
type Chess_Ground is new Ground_Abstract with record Current_Player : Player_Type := light; ... end record; function Status (Ground : in Chess_Ground'class) return Game_Status_Type;
|
Et voici mon appel ligne 18 à la fonction Status :
Code :
function Self_Game(Name : in Games_Type) return Samples_Access is Result : Samples_Access; Game : Game_Type; begin case Name is when Chess => declare Samples : Sample_Vector.Vector; System : System_Type; begin Game.Game := new Games.Chess.Chess_Game; if Game.Game = null then raise Program_Error; end if; Game.Game.Ground := new Games.Chess.Chess_Ground'class ' (Games.Chess.Initialize); while Game.Game.Ground.Status = Continue loop Games.Chess.To_Play(Game.Game.Ground.all, System); Samples := Samples & Encode(System); end loop;
|
Pouvez vous m'aiguiller justement ... Merci pour votre aide.