Si j'ai défini un type de tableau commeada.Containers.Vector à un tableau
type Integer_Array is array(Natural range <>) of Integer;
et également utiliser Ada.Containers.Vectors de paquet comme
package Integer_Vectors is new Ada.Containers.Vectors(
Element_Type => Integer,
Index_Type => Natural);
use Integer_Vectors;
Comment puis-je mettre en œuvre la fonction suivante ?
function To_Integer_Array(V : Integer_Vectors.Vector) return Integer_Array;
Ce que j'ai jusqu'à présent
Conceptuellement, il semble vraiment facile:
- Déclarez Temp_Arr comme Integer_Array avec une capacité de V.Length
- itérer sur V et copier tous les éléments à Temp_Arr
- Retour Temp_Arr
Étape 1. me donne des maux de tête cependant. J'ai essayé:
function To_Integer_Array(V: Integer_Vectors.Vector) return Integer_Array is
Temp_Arr: Integer_Array(1..V.Length);
begin
-- Todo: copy values here
return Temp_Arr;
end To_Integer_Array;
Cela jette
expected type "Standard.Integer"
found type "Ada.Containers.Count_Type"
Bien que l'erreur a beaucoup de sens, je ne suis pas certain de la façon dont je pourrais le résoudre.
Existe-t-il un moyen de convertir Ada.Containers.Count_Type en Standard.Integer? Y aurait-il une autre façon de créer un Integer_Array à partir d'Integer_Vector?
'Entier (V.Length)' ou mieux, 'naturel (V.Length)' –
Ce fut grâce rapide. Est-ce sûr pour chaque Count_Type? –
Je ne sais pas ce que vous voulez dire, mais je ne m'attends pas à ce que le compilateur me le dise. Tout le moyen de conversion de type est "oui je voulais faire ça". –