1

簡単な質問がありますが、答えが見つかりません。

Ada で、互いの型のコンポーネントを含む 2 つの型を持つことは可能ですか?

これが私がやりたいことの簡単な例です:

type Toto is record
   T: Titi;
end record;

type Titi is record
   T: Toto;
end record;

このようには機能していませんが、同等のものを作ることは可能ですか?

4

2 に答える 2

4

これはできません: Toto のインスタンスをどのように作成する必要がありますか? これには Titi のインスタンスが含まれている必要があり、Titi には Toto が含まれています。

ただし、同様のことが可能です。

type Titi;

type Toto is record
   T : access Titi;
end record;

type Titi is record
   T : Toto;
end record;

その場合、Toto には、実際の Titi ではなく、Titi 型のレコードへの参照/ポインタのみが含まれます。最適な型宣言を見つけるには、これらの型で何を表現したいのか、実際の関係は何かを慎重に検討してください。質問で提示した内容が問題を正確に表していないことに気付くと思います。代わりに、Toto.T と Titi.T の少なくとも 1 つをアクセス値で表す必要があります。おそらく両方です。あなたは当面の問題が何であるかを言わないので、ここで何が最善の (最も適切な) 型宣言になるかわかりません。

于 2013-07-10T09:33:18.617 に答える
0

Titi を前方宣言する必要があります。私は次のようにするべきだと思います:

type Titi;

type Toto is record
   T: Titi;
end record;

type Titi is record
   T: Toto;
end record;
于 2013-07-10T09:26:49.827 に答える