2016-04-27 16 views
1

をどのように機能するかを理解することはできませんコードはそれである:はここにジェネリック医薬品は、私がLinked_List(.ads)と呼ばれるパッケージを持っている

Generic 
    type T is private; 
package Linked_List is 
    type List is tagged record 
     Data : T; 
    end record; 
end Linked_List; 

、ここでは主な機能(メインを含むパッケージ内のコードです。 ADB)

with Ada.Text_IO; use Ada.Text_IO; 
with Linked_List; 
procedure Main is 
    type ListOfIntegers is new Linked_List(T => Integer); 
begin 
    null; 
end Main; 

私はこのエラーを取得しています:

4:30 subtype mark required in this context 
found "Linked_List" declared at linked_list.ads:3 
found "Linked_List" declared at linked_list.ads:3 
4:41 incorrect constrain for this kind of type 

すべてのヘルプは高く評価されます。

答えて

5

new Linked_List(T => Integer)は、新しいタイプではなく、パッケージを定義します。コンパイラがあなたが型を宣言していると思っているので、カラム30のパッケージの名前が混乱しているのを見て、エラーメッセージが出ます。それは(サブ)型の名前を見たいと思っていました。

4行は、あなたが

My_List : ListOfIntegers.List; 

を書くことができますので、あなたは迷惑なListOfIntegers.のすべての時間を言ってたかもしれません、タイプListOfIntegers.Listがあるその後

package ListOfIntegers is new Linked_List(T => Integer); 

をお読みください。あなたはちょうど

My_List : List; 

を書くことができますが、通常、すべてのは、それを作るそれらを「使用する」、あなたは「withed」パッケージの数十を持っている場合(これをやりすぎないように最善と思っていますこの後

use ListOfIntegers; 

を言うことができますどちらがあなたを参照しているのかを知ることは難しい)。

ところで、通常のAdaの使用法では、アンダースコアを使用して識別子の単語を区切ります:List_Of_Names

関連する問題