1

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

在 Ada 中是否有可能有两种类型包含彼此类型的组件?

这是我想做的一个简单示例:

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 中的一个需要由访问值表示——可能两者都有。你没有说手头的问题是什么,所以我不知道这里最好(最合适)的类型声明是什么。

于 2013-07-10T09:33:18.617 回答
0

你必须转发声明蒂蒂。我认为以下应该做到这一点:

type Titi;

type Toto is record
   T: Titi;
end record;

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