我想创建一个任务类型(例如名为“computer”的任务类型),其中包含Ada中的一些任务条目。我想创建一个任务条目,其输入参数类型为“是访问所有计算机”,即指向任务类型的指针。这有可能吗?
我试着这样做:
task type computer;
type computer_ptr is access all computer;
task type computer is
entry init(a: computer_ptr);
end computer;
建议here。不幸的是,这不起作用:GNAT说“计算机”的声明冲突。
有人能想出一种方法来实现我想做的事吗?
答案 0 :(得分:5)
通过使用task type computer;
,您声明一个完全没有条目的任务类型计算机。然后,您声明另一个具有相同名称的任务类型。
如果要“转发声明”任务类型(根据访问类型的需要),您应该像任何其他类型一样编写type computer;
。这是一个不完整的类型,可以通过任务类型声明来完成。
所以你的例子应该是这样的:
type computer;
type computer_ptr is access all computer;
task type computer is
entry init (a: computer_ptr);
end computer;