我有一个简单的问题,但我找不到答案。
Ada中是否有2种类型包含彼此类型的组件?
以下是我想要做的一个简单示例:
type Toto is record
T: Titi;
end record;
type Titi is record
T: Toto;
end record;
它不是以这种方式工作,但可以做出相同的东西吗?
答案 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;