2016-11-26 2 views
1

J'essaie de créer un tableau d'éléments de type mutables non contraints; mais, comme l'élément est non contraint, j'ai cette erreur: "type d'élément sans contrainte dans la déclaration de tableau".Tableau de type mutable non contrainte dans Ada

Voici ma déclaration de type carré:

type C_square(size : bRange) is tagged record 

private 

type C_square(size : bRange) is tagged record 
    bConstaint : uint8 := size; 
    coord : T_coord;    
    color : e_color := unknown; 
end record; 

Et voilà l'erreur:

type C_board(size : bRange) is tagged limited private; 

type square_matrix is array (uint8 range <>, uint8 range <>) of C_square; -- here is the problem C_square is uncontrained 

private 
type C_board(size : bRange := MIN_SIZE) is tagged limited record 
    bSize : uint8 := size; 
    square_m : square_matrix(1..size, 1..size); 
end record; 

est-il une solution qui me permettent d'avoir un ensemble d'éléments sans contrainte mutables?

+2

Vous recherchez peut-être un [_indefinite container_] (http://www.adaic.org/resources/add_content/standards/05rat/html/Rat-8-5.html). – trashgod

+0

Peut-être que donner une taille par défaut fera la différence? – Alex

Répondre

3

Vous ne pouvez pas avoir un tableau d'éléments non contraints.

Quelques alternatives:

  • Utilisez un vecteur indéfini. (Bon!)
  • Créez un tableau d'accès à votre type indéfini. (Bad!)