簡體   English   中英

Ada OOP抽象類型的“通用”類型

[英]Ada OOP “generic” types for abstract type

我想做的是創建一個可以控制代碼其他部分傳遞給它的值的類型。 這是菜單系統的一部分,將擴展抽象類型,並且本身就是抽象。 我想做的就是存儲訪問權限。 很簡單。

type Adjuster is abstract new Menu_Item with record
    --other fields
    Value : access Integer;
end record;

問題是,如何使它可擴展到其他類型? 我寧願不必定義Integer_Adjuster,Float_Adjuster等。我有點想使用泛型:

generic
    type T;
    type T_Access is access T;
type Adjuster is abstract new Menu_Item with record
    --other fields
    Value : T_Access;
end record;

但這告訴我“ type Adjuster ...”行上缺少分號,大概是因為Ada / Gnat無法弄清楚該行是在聲明應包含在通用部分中的類型還是此類型。通用部分應適用。 我認為做到這一點的唯一方法是實際制作一個Adjuster軟件包並使其通用(但我寧願不...)。

我還喜歡存儲地址而不是訪問的想法,因為Ada不在乎它是哪種地址:

type Adjuster is abstract new Menu_Item with record
    --other fields
    Value : System.Address
end record;

但是首先,我對Addresses的了解不足,無法確定它是否會工作或如何工作(您是否將其分配給Value.all ..?),其次,能夠存儲[聳聳肩]的感覺真像艾達(Ada)被設計成無法做的事情

我有點主意。 任何幫助,將不勝感激。

通過將要擴展的類型tagged為,可能會得到所需的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM