我正在尝试编写一个通用包,所需的操作之一是校验和通过总线接收的数据记录。记录类型会有所不同,它是一个通用参数。但是,任何访问泛型参数成员的尝试都会导致编译错误。
错误......(Ada 95 GNAT 2009)
file.adb:XX no selector "Data" for private type "The_Transfer_Type" defined at file.ads:YY
宣言...
generic
type The_Transfer_Type is private;
SIZE : Integer;
package CC_Test_Channel is
function Checksum(Msg : The_Transfer_Type) return Integer;
end package
还有身体...
function Checksum(Msg : The_Transfer_Type) return Integer is
Sum : Integer := 0;
begin
-- calculate the checksum
for i in 1 .. SIZE loop
Sum := Sum + Integer(Msg.Data(i));
end loop;
return Sum;
end Checksum;