2017-10-26 10 views
1

レベルを構築するプロシージャで参照できるグローバルマップを作成しようとしています。Ada 2012マップを静的に初期化する方法

このグローバルマップを仕様(.ads)に静的に設定できるのが理想的です。

ここでは、静的な初期化部分を行う方法を推測しようとしている私のいくつかの壊れたコードです:

package Positive_to_Positive_Type is new Ada.Containers.Formal_Ordered_Maps 
    (Key_Type => Positive, 
    Element_Type => Positive); 

Positive_to_Positive : Positive_to_Positive_Type.Map := 
    ((1 => 11), 
    (2 => 12)); 

次のようにエラーは以下のとおりです。

expected private type "Ada.Containers.Formal_Ordered_Maps.Map" from instance at line 1 
found a composite type 

今、私はレコードをかけてることを取得のような構文を動的構造体の初期化にしようとすると、.adsの値を持つマップを初期化することも可能ですか?それとも、常にadbにInsertなどで行う必要がありますか?

ありがとうございます。

+0

はシングルトンマップされますが、マップの複数のインスタンスを初期化したいのですか? –

+3

マップのデフォルトの初期化を指定する方法はありませんが、各インスタンスは関数呼び出しによって初期化できます。 –

+0

シングルトンです。 OK、ありがとうございます。 –

答えて

1

これは、パッケージの初期設定レベルで行うことができます。 あなたがパッケージ仕様「A」にPositive_to_PositiveとPositive_to_Positive_Typeを宣言したと仮定すると、あなたのパッケージ本体には、次のようになります。

package body A is 
begin 
    Positive_to_Positive.Insert (1, 11) 
    Positive_to_Positive.Insert (2, 12) 
end A; 
+0

これはおそらく、仕様に「プラグマElaborate_Body」が必要ですか? –

関連する問題