2016-11-19 3 views
0

私のコードで修正が必要なことを説明するためのドキュメントが見つかりません。コードは次のとおりです。「完全なビューの宣言は私的な部分に表示する必要があります」

type BinarySearchTreePoint is limited private; 
    type Node; 
    type BinarySearchTreePoint is access Node; 

    type Node is 
     record 
     Llink, Rlink : BinarySearchTreePoint; 
     Ltag, Rtag : Boolean; --True indicates pointer to lower level, 
           -- False a thread. 
     Info : Customer; 
     end record; 

エラーはdeclaration of full view must appear in private partです。このエラーは、type BinarySearchTreePoint is access Node;という行を指しています。エラーメッセージの意味がわかりません。

+1

ような何かを言う必要があるだろうパッケージの外に見えるようにNodeが必要な場合その包み。プライベートタイプを宣言し、そのプライベートタイプの詳細を公開する必要はありません。 –

+0

[*§3.10.1不完全型宣言*](http://www.ada-auth.org/standards/12rm/html/RM-3-10-1.html)も参照してください。 – trashgod

+0

@BrianDrummondどのようにわからないのですか? 'タイプBinarySearchTreePointは限定されたプライベートアクセスノードです;'?そんな感じ? –

答えて

5

type Foo is private;(またはlimited private)と言うときは、私的な部分に完全な宣言をする必要があります。もちろん、にはがあることを意味します。

あなたが表示されたコードは

package Foo is 
    type BinarySearchTreePoint is limited private; 
private 
    type Node; 
    type BinarySearchTreePoint is access Node; 

    type Node is 
     record 
     Llink, Rlink : BinarySearchTreePoint; 
     ... 

でコンパイルしますが、あなたは、あなたがのプライベート部分にこれを入れて

package Foo is 
    type BinarySearchTreePoint is limited private; 
    type Node is private; 
    -- stuff to do with getting a Node from a BinarySearchTreePoint?? 
    function Content (Of_Node : Node) return Customer; 
private 
    type BinarySearchTreePoint is access Node; 

    type Node is 
     record 
     Llink, Rlink : BinarySearchTreePoint; 
     ... 
+1

また、このソリューションは、 '完全なビューの宣言は私的な部分に現れなければならない 'という意味を説明しています。 'BinarySearchTreePoint'の宣言が2つあります。最初のものは '私的です 'と言います。つまり、完全な型定義はここでは与えられません。代わりに、完全な型定義は 'Foo'パッケージのprivate部分の2番目の宣言で与えられます。これは 'BinarySearchTreePoint'の2番目の宣言がするものです。このように完全型定義は、人間またはコンパイラの読者が完成した定義を見ることができるように見える。 – B98

関連する問題