在完全声明之前使用类型

时间:2013-07-10 09:23:26

标签: ada

我有一个简单的问题,但我找不到答案。

Ada中是否有2种类型包含彼此类型的组件?

以下是我想要做的一个简单示例:

type Toto is record
   T: Titi;
end record;

type Titi is record
   T: Toto;
end record;

它不是以这种方式工作,但可以做出相同的东西吗?

2 个答案:

答案 0 :(得分:4)

你不能这样做:如何创建Toto实例?它必须包含一个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 :(得分:0)

你必须转发声明Titi。我认为以下应该这样做:

type Titi;

type Toto is record
   T: Titi;
end record;

type Titi is record
   T: Toto;
end record;