汎用パッケージを作成しようとしていますが、必要な操作の1つは、バスを介して受信したデータレコードをチェックサムすることです。レコードタイプはさまざまであり、一般的なパラメータです。ただし、ジェネリックパラメータのメンバーにアクセスしようとすると、コンパイルエラーが発生します。
エラー...(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;