2015-02-15 3 views
1

Я получаю сообщение «невидимое объявление» на моем генераторе. Я конвертирую этот код из одной процедуры в несколько процедур и функций.Ошибка объявления не видимой Ada

Я немного укоротил код Любое объяснение ошибки невидимого объявления было бы оценено. НЕРАСПРОСТРАНЕНИЕ видна ошибка декларации происходит в этом блоке коды:

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; 
+0

Read http://sscce.org/, вы должны создать кратчайший возможный пример, который воспроизводит ошибку. Удалите код, который не имеет отношения к проблеме. Тем не менее, его все еще нужно компилировать. – sashoalm

+0

Кроме того, вы не можете скопировать и вставить фактический текст ошибки, предоставленный компилятором? – sashoalm

+0

Что происходит с редактированием здесь? Пожалуйста, прекратите все откаты. –

ответ

5

non-visible declaration at a-nudira.ads:48 и 50 (номера строк могут изменяться в зависимости от выпуска компилятора) являются потому, что Ada.Numerics.Discrete_Random см ARM A.5.2(16), это общий пакет и должно быть создано с тем, какой вам нужен дискретный тип.

В вашем случае, я думаю, что это Guess:

package RNG is new Ada.Numerics.Discrete_Random (Result_Subtype => Guess); 
use RNG; 
Смежные вопросы