Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide Recherche
2121 connectés 

  FORUM HardWare.fr
  Programmation
  ADA

  Ada: type t'class, access, ... bref erreur de type

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ada: type t'class, access, ... bref erreur de type

n°128783
silvyan
Posté le 20-04-2002 à 00:13:16  profilanswer
 

J'ai cru voir des programmeurs ada, alors bonjour a eux.
Je tiens à vous soumettre ce problème de typage.
Je souhaite faire une structure de type hétérogène.
je pense alors a de l'objet, avec polymorphisme et aiguillage dynamique, mais ca ne marche pas...
 
procedure test is
 type obj1 is tagged null record;
        --1er obj vide
 type obj2 is new obj1 with null record;
        --2nd obj vide
 type ptr is access obj1'class;          
        --pointeur sur la classe obj1 et donc sur obj1 et obj2
 
 procedure test (t: in obj1) is
 begin
  null;
 end test;
 
 procedure test (t: in obj2) is
 begin
  null;
 end test;
 
 procedure test_tag (t: in ptr) is
 begin
  test(t.all);
 end test_tag;
 
begin
 null;
end test;
 
et après compilation j'obtiens l'erreur:
 
If the expected type of a name or expression is a tagged type, then it shall not be dynamically tagged unless it is a controlling operand in a call on a dispatching operation
 
ben alors, oui c'est justement pour faire du "dispatching"...
 
voila, si quelqu'un voulez bien m'expliquer pourquoi, et comment arriver à mes fins. merci.

mood
Publicité
Posté le 20-04-2002 à 00:13:16  profilanswer
 

n°128874
benou
Modérateur
Posté le 20-04-2002 à 16:28:53  profilanswer
 

houla ... ton problème dépasse mes faibles et viellissantes connaissances ;)
désolé, je peux pas t'aider sur ce coup là ...  
 
(up)

n°1908082
Hibou57
Posté le 23-07-2009 à 18:40:20  profilanswer
 

silvyan a écrit :

J'ai cru voir des programmeurs ada, alors bonjour a eux.
Je tiens à vous soumettre ce problème de typage.
Je souhaite faire une structure de type hétérogène.
je pense alors a de l'objet, avec polymorphisme et aiguillage dynamique, mais ca ne marche pas...
[...]


Bonjour Silvyan,
 
Aprés examen de ton source, il apparait que le dispatching ne peut pas fonctionner directement sous la forme où tu l'as tenté, car les primitives (les opérations qui peuvent être redéfinies et donc dispatchées), ne peuvent apparaitrent que dans une spécification de package.
 
Dans ton exemple, les déclarations apparaissent comme des déclarations locales d'une procédure.
 
Il est en effet souvent tentant de faire des teste dans les déclarations locales d'une procédure, car c'est plus rapide, mais ça ne fonctionne pas toujours, car Ada n'autorise pas tout dans ce contexte.
 
Pour faire fonctionner ton exemple, il est tout de même possible de déclarer un package localement (pour ce cas précis, ça marche).
 
De plus, tu as déclaré tes procédure “ test ”, au mauvais endroit. Pour qu'elle soit interprétée comme une primitive, la déclaration d'une opération ou d'une fonction, doit apparaître immédiatement aprés la déclaration du type.
 
Voici un exemple reformulé, qui reprend autant que possible tes propres termes :  
 
(le forum modifie un peu la mise en forme, désolé pour ça)
 

Code :
  1. -- Exemple Ada 2005
  2. procedure Essais is
  3.    -- Pour http://forum.hardware.fr/hfr/Programmation/ADA/
  4.    -- class-access-erreur-sujet_18288_1.htm
  5.    -- ========================================================================
  6.    -- Specifications de Dispatching
  7.    -- ------------------------------------------------------------------------
  8.  
  9.    package Dispatching is
  10.       type Obj1 is tagged null record;
  11.       -- 1er obj vide
  12.       procedure Test (T : in Obj1);
  13.       -- Primitive de Obj1
  14.       type Obj2 is new Obj1 with null record;
  15.       -- 2nd obj vide
  16.       overriding procedure Test (T : in Obj2);
  17.       -- Redefinition de la primitive.
  18.       -- Le mot clé "overriding" n'est pas obligatoire, mais il rend
  19.       -- le source plus claire.
  20.    end Dispatching;
  21.    -- ========================================================================
  22.    -- Implementation de Dispatching
  23.    -- ------------------------------------------------------------------------
  24.  
  25.    package body Dispatching is
  26.      
  27.       procedure Test (T : in Obj1) is
  28.       begin
  29.          null;
  30.       end Test;
  31.       procedure test (T : in Obj2) is
  32.       begin
  33.          null;
  34.       end Test;
  35.      
  36.    end Dispatching;
  37.    -- ========================================================================
  38.    -- Type et objet pour l'essai
  39.    -- ------------------------------------------------------------------------
  40.  
  41.    type Ptr is access Dispatching.Obj1'Class;
  42.    --pointeur sur la classe obj1 et donc sur obj1 et obj2
  43.    procedure Test_Tag (T : in Ptr) is
  44.    begin
  45.       Dispatching.Test (T.all);
  46.    end Test_Tag;
  47.    Obj : constant Ptr := new Dispatching.Obj1;
  48.    -- ========================================================================
  49.    -- Point d'entré du programme
  50.    -- ------------------------------------------------------------------------
  51.  
  52. begin
  53.  
  54.    Test_Tag (Obj);
  55.  
  56. end Essais;


n°1908086
Masklinn
í dag viðrar vel til loftárása
Posté le 23-07-2009 à 19:03:17  profilanswer
 

Hibou57 a écrit :


Bonjour Silvyan,


7 ans plus tard [:implosion du tibia]


---------------
Being constantly subjected to something makes you somewhat immune to it, like Brits and misery. -- Craspology
n°1908089
nraynaud
trainoo.com
Posté le 23-07-2009 à 19:15:49  profilanswer
 

IWH 7 years \o/ statistiquement, le posteur original a changé 3 fois de boite depuis ...


---------------
trainoo.com, re-faisez du sport | Mes derniers entraînements
n°1908092
sircam
I Like Trains
Posté le 23-07-2009 à 19:21:15  profilanswer
 

C'est ça, la cat ADA. [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1908103
Hibou57
Posté le 23-07-2009 à 20:11:57  profilanswer
 

Et que ce thème puisse être récurrent et récurer le moral de ses victimes, ça ne vous ait jamais venu à l'esprit ?
 
Vaut-il mieux une question qui reste sans réponse ou un problème qui trouve une solution ?
 

n°1908104
Masklinn
í dag viðrar vel til loftárása
Posté le 23-07-2009 à 20:16:32  profilanswer
 

Hibou57 a écrit :

Et que ce thème puisse être récurrent et récurer le moral de ses victimes, ça ne vous ait jamais venu à l'esprit ?


Après 7 ans sans que personne ne s'en préoccupe et pour un langage que personne n'a envie d'utiliser (à part jovalise)? Non.

Message cité 1 fois
Message édité par Masklinn le 23-07-2009 à 20:16:41

---------------
Being constantly subjected to something makes you somewhat immune to it, like Brits and misery. -- Craspology
n°1908111
Hibou57
Posté le 23-07-2009 à 20:36:24  profilanswer
 

Masklinn a écrit :


Après 7 ans sans que personne ne s'en préoccupe et pour un langage que personne n'a envie d'utiliser (à part jovalise)? Non.


Jovalise est ici ??  :)  :)  
 
Comment il va ?  :)  :)  
 
Invite le à passer sur comp.lang.ada à l'occasion

Message cité 1 fois
Message édité par Hibou57 le 23-07-2009 à 20:36:53
n°1908115
Masklinn
í dag viðrar vel til loftárása
Posté le 23-07-2009 à 20:46:35  profilanswer
 

Hibou57 a écrit :


Jovalise est ici ??  :)  :)  
 
Comment il va ?  :)  :)  
 
Invite le à passer sur comp.lang.ada à l'occasion


Moi? Non merci, tu peux t'en charger tout seul j'évite de le lancer perso.


---------------
Being constantly subjected to something makes you somewhat immune to it, like Brits and misery. -- Craspology
n°1908268
gilou
Modérateur
It's the only NEET thing to do
Posté le 24-07-2009 à 12:45:31  profilanswer
 

Hibou57 a écrit :

Et que ce thème puisse être récurrent et récurer le moral de ses victimes, ça ne vous ait jamais venu à l'esprit ?
 
Vaut-il mieux une question qui reste sans réponse ou un problème qui trouve une solution ?
 

Oui oui, perso, j'approuve pleinement ton intervention, et si ça plait pas à Masklinn, c'est son problème.
A+,


---------------
I think you guys should really consider virtualizing the whole process and moving it to the cloud.
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ADA

  Ada: type t'class, access, ... bref erreur de type

 

Sujets relatifs
Erreur avec L'include pour Online.fr [trés urgent!]Personnalisation page d'erreur sous free
Interbase, comment déclarer un champ de type booléen[PHP] C'est quoi cette erreur ????
[c/c++/dll]Pourquoi ce programme provoque une erreur (windows)?Interface Access vers un Agenda ???
[PERL] Liste des tables dans Access.... SQL commande ?Probleme de formulaire ou de PHP... j'arrive pas a trouver l'erreur
[delphi]ca vous dit quelque chose ce message d'erreur?Manipulation de BD Access avec Visual Basic [edit : + onglets]
Plus de sujets relatifs à : Ada: type t'class, access, ... bref erreur de type


Hit-Parade
Copyright © 1997-2012 Hardware.fr SARL / Groupe LDLC / LesNumeriques.com / Version anglaise du site: BeHardware