Ada不可见的声明错误

Cha*_*e S 1 ada

我在Generator上收到"不可见的声明"错误.我正在将此代码从单个过程转换为使用多个过程和函数.

我已经截断了一些代码任何对不可见声明错误的解释都将不胜感激.在这段代码中发生了不可见的声明错误:

WITH Ada.Integer_Text_IO;
USE Ada.Integer_Text_IO;
WITH Ada.Text_IO;
USE Ada.Text_IO;
WITH Ada.Strings;
USE Ada.Strings;
WITH Ada.Numerics.Discrete_Random;

PROCEDURE Project IS
SUBTYPE Guess IS Integer RANGE 1 .. 25;
G             : Generator;
CorrectAnswer : Guess;
UserGuess     : Guess;
BEGIN
Reset (G);    
CorrectAnswer := Random(G);
   FOR I IN 1..3 LOOP          
      GetUserGuess(UserGuess);
      PrintCorrectAns(CorrectAnswer);
      IF IsCorrect(UserGuess) THEN
         Put("You Win!");
      ELSE
         Put("You Lose!");
      END IF;
   END LOOP;
End Project;
Run Code Online (Sandbox Code Playgroud)

Sim*_*ght 5

non-visible declaration at a-nudira.ads:4850(行号可以用编译器版本而变化)是因为Ada.Numerics.Discrete_Random,看到ARM A.5.2(16) ,是一个通用的包装,需要不同,需要取其离散型实例化.

在你的情况下,我想这是Guess:

package RNG is new Ada.Numerics.Discrete_Random (Result_Subtype => Guess);
use RNG;
Run Code Online (Sandbox Code Playgroud)