我有一个简单的问题,但我找不到答案。
在 Ada 中是否有可能有两种类型包含彼此类型的组件?
这是我想做的一个简单示例:
type Toto is record
T: Titi;
end record;
type Titi is record
T: Toto;
end record;
它不是以这种方式工作的,但是否可以制作等效的东西?
我有一个简单的问题,但我找不到答案。
在 Ada 中是否有可能有两种类型包含彼此类型的组件?
这是我想做的一个简单示例:
type Toto is record
T: Titi;
end record;
type Titi is record
T: Toto;
end record;
它不是以这种方式工作的,但是否可以制作等效的东西?
你不能这样做:应该如何创建 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 中的一个需要由访问值表示——可能两者都有。你没有说手头的问题是什么,所以我不知道这里最好(最合适)的类型声明是什么。
你必须转发声明蒂蒂。我认为以下应该做到这一点:
type Titi;
type Toto is record
T: Titi;
end record;
type Titi is record
T: Toto;
end record;