【发布时间】:2010-03-03 17:19:12
【问题描述】:
假设我有以下内容:
type blah is abstract tagged
record
element1 : integer;
end record;
type blah2 is abstract tagged
record
element2 : integer;
end record;
我希望我可以做这样的事情:
type blah3 is abstract new blah1 and blah 2 with null record;
所以理论上我现在可以访问 blah3.element1 和 blah3.element2
这可能吗?以及任何提示或提示?
更新:
是否可以使用指针引用 blah3 的元素(包含 blah 和 blah2)?
I.E. (这只是一个粗略的想法,代码很糟糕......哈哈)
type blah3 is new type with
record
element1 : ptr to blah.element1;
element2 : ptr to blah2.element2;
end record
然后就可以通过 以 blah3.element1 为例?
【问题讨论】:
-
简而言之,不,在 Ada 中不可能以您希望的方式进行多重继承。使用“mixins”和接口继承可以实现近似的类似物,但我在这些领域做得不多,所以我不想提供没有经验的建议来支持它(这并不是阻止大多数博主:-)。您要解决的问题是什么?也许有一个不涉及 MI 的好解决方案。
-
目标是保持一个特定的“包”黑盒,即记录 Blah 3 是对我们包的典型“调用”,但某些事件导致我们必须将数据放入两种不同类型,希望以某种方式统一它们,所以我们可以不理会最初的调用,它会仍然为试图打电话的外部人员工作。-我希望这是有道理的。
标签: types polymorphism multiple-inheritance ada