Ada: type t'class, access, ... bref erreur de type - Ada - Programmation
Marsh Posté le 20-04-2002 à 16:28:53
houla ... ton problème dépasse mes faibles et viellissantes connaissances
désolé, je peux pas t'aider sur ce coup là ...
(up)
Marsh Posté le 23-07-2009 à 18:40:20
silvyan a écrit : J'ai cru voir des programmeurs ada, alors bonjour a eux. |
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 :
|
Marsh Posté le 23-07-2009 à 19:03:17
Hibou57 a écrit : |
7 ans plus tard
Marsh Posté le 23-07-2009 à 19:15:49
IWH 7 years \o/ statistiquement, le posteur original a changé 3 fois de boite depuis ...
Marsh Posté le 23-07-2009 à 19:21:15
C'est ça, la cat ADA.
Marsh Posté le 23-07-2009 à 20:11:57
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 ?
Marsh Posté le 23-07-2009 à 20:16:32
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.
Marsh Posté le 23-07-2009 à 20:36:24
masklinn a écrit : |
Jovalise est ici ??
Comment il va ?
Invite le à passer sur comp.lang.ada à l'occasion
Marsh Posté le 23-07-2009 à 20:46:35
Hibou57 a écrit : |
Moi? Non merci, tu peux t'en charger tout seul j'évite de le lancer perso.
Marsh Posté le 24-07-2009 à 12:45:31
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 ? |
Oui oui, perso, j'approuve pleinement ton intervention, et si ça plait pas à Masklinn, c'est son problème.
A+,
Marsh Posté le 20-04-2002 à 00:13:16
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.