IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ada Discussion :

Tableau de pointeurs erreur array type required in indexed component


Sujet :

Ada

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut Tableau de pointeurs erreur array type required in indexed component
    Bonjour,

    J'ai créer un tableau de pointeurs de type integer mais à la compilation il me met : array type required in indexed component.

    Voici mon fichier list.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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    with ada.text_io;                         use ada.text_io;
    with ada.integer_text_io;              use ada.integer_text_io;
    with ada.float_text_io;                 use ada.float_text_io;
    with ada.Strings.Unbounded;         use ada.Strings.Unbounded;
    with ada.Text_IO.Unbounded_IO;   use ada.Text_IO.Unbounded_IO;
     
    with ada.Containers.Generic_Array_Sort;
    with Ada.Unchecked_Deallocation;
     
    package list is
     
      type MAX_TAB is range 1..9;
      procedure List_Display;
     
      type pList is private;
     
      private
      -- Lettre r devant une variable veut dire record.
      -- Lettre p : pointeur.
     
      type pNode is access integer;
      type pList is array(MAX_TAB) of pNode;
     
    end list;
    list.adb :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    package body list is
      procedure List_Display is
      begin
        put("Pour éviter que le compilo râle");
      end List_Display;
    end list;
    Le main.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
     
    with ada.text_io;                         use ada.text_io;
    with ada.integer_text_io;              use ada.integer_text_io;
    with ada.float_text_io;                 use ada.float_text_io;
    with ada.Strings.Unbounded;         use ada.Strings.Unbounded;
    with ada.Text_IO.Unbounded_IO;   use ada.Text_IO.Unbounded_IO;
    with list; use list;
     
    with ada.Containers.Generic_Array_Sort;
    with Ada.Unchecked_Deallocation;
     
    procedure main is
      List : pList;
    begin
      List(1) := new integer'(120);
      put("List(1).integer = "); put(List(1).integer); new_line;
    end main;

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Par défaut
    Bonsoir hbx360,

    Tu ne peux pas affecter de valeurs à ta liste comme si c'était un tableau, car tu as déclaré pList comme étant privé en partie visible.
    Lorsque tu utilise un package, tu ne voie que ce qui est en partie visible, la partie privé étant visible uniquement pour le package et ces descendants.

    PS: même si tu avais le tableau en partie visible, tu aurai un problème à la ligne 16 de ton main. Pour accéder au contenu du pointeur, il faut utiliser le `.all` (ou rien du tout).

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut
    Merci pour ta réponse. Problème résolu.

  4. #4
    Membre chevronné Avatar de Blackknight
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2009
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 214
    Par défaut
    Rien à voir avec ta question mais dans le corps de List_Display, pour éviter que le compilo ne râle, tu peux lui dire explicitement qu'il n'y a rien à faire en utilisant null :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    package body list is
      procedure List_Display is
      begin
          null;
      end List_Display;
    end list;
    Après si c'est pour implémenter plus tard, tu peux aussi te laisser un pense-bête et lever une exception à l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    package body list is
      procedure List_Display is
      begin
          pragma Compile_Time_Warning (Standard.True, "List_Display non implementée");
          raise Program_Error with "Procedure List_Display non implémentée";
      end List_Display;
    end list;

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    Par défaut
    Merci pour ta réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tableau de pointeur de fonction
    Par Gryzzly dans le forum C
    Réponses: 7
    Dernier message: 31/12/2005, 11h47
  2. Tableau de pointeurs sur objets
    Par bassim dans le forum C++
    Réponses: 11
    Dernier message: 13/12/2005, 20h45
  3. [GCC] Tableau de pointeurs pour accès multiples en asm
    Par Flo. dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 12/12/2005, 09h47
  4. tableau de pointeurs
    Par seal3 dans le forum C++
    Réponses: 7
    Dernier message: 01/11/2005, 21h51
  5. Tableau de pointeurs de fonctions
    Par Alp dans le forum C++
    Réponses: 7
    Dernier message: 29/10/2005, 14h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo