两个私有标记类型的公共子程序的配置文件是否需要打包?

时间:2017-01-27 20:55:51

标签: oop ada

下面的包P在其中声明了两个私有类型,紧接着是一个带有任一类型参数的子程序。两种类型都有标记,但仅限于私密标记。尽管如此,编译器仍抱怨Proc只能在一种类型中进行调度。因此,private不会“隐藏”标记,并且可能会将Proc解释为两个标记类型候选的原始操作?也许这是因为身体最终将采用实际标记的对象。另一方面,'Class无法添加到参数配置文件中。

当尝试以尽可能简单的方式解决问题时,我只能想到嵌套包,将其中一个类型屏蔽掉,或者使Proc非基元。然后,视觉干扰的顺序增加,后者

package P is

    type T1 is private;
    type T2 is private;

    procedure Proc (A : T1; B : out T2);  -- !

    package Not_Dispatching is
        procedure Proc (A : T1; B : out T2);
    end Not_Dispatching;

private
    type T1 is tagged null record;
    type T2 is tagged null record;
end P;

和前者:

package PP is

    type T1 is private;
    package Exclude_From_Dispatching is
        type T2 is private;
    private
        type T2 is tagged null record;
    end Exclude_From_Dispatching;
    use Exclude_From_Dispatching;

    procedure Proc (A : T1; B : out T2);

private
    type T1 is tagged null record;
end PP;

丑陋似乎表明全面重组。还有其他一些更简单的方法吗?

0 个答案:

没有答案