📄 stacks.ads
字号:
with LimitedPrivateType;package Stacks is type Object_Stack is tagged private; -- -- Base type -- type Object is tagged record X: Float; Y: Float; end record; -- -- Object_Ptr is access to all types tagged as Object and -- its derived types. -- type Object_Class_Ptr is access all Object'Class; -- -- Derived type of Object -- type Point is new Object with null record; type Circle is new Object with record Radius: Float; end record; procedure Push(OS: in out Object_Stack'Class; OCA: Object_Class_Ptr); function "=" (First_OS, Second_OS: Object_Stack'Class) return Boolean; Abyss_Object: Object := Object'(X=>0.0, Y=>0.0); -- -- -- Can Assign parameter P since its declared private -- procedure LimitedPrivateTypeCannotBeAssigned(P: LimitedPrivateType.PrivateCell); -- -- Can not assign parameter P since its type is limited private -- procedure LimitedPrivateTypeCanBeInitialized(P: LimitedPrivateType.LimitedPrivateCell);private -- -- Inherited by all Object'Class types -- function Distance(OC: Object'Class) return Float; Max: constant := 100; type Object_Vector is array (Integer range <>) of Object_Class_Ptr; type Object_Stack is tagged record S: Object_Vector(1..Max); Top: Integer range 0..Max := 0; end record;end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -