2012-05-14 3 views
4

Я хочу создать тип задачи (например, тип задачи, называемый «компьютер»), с некоторыми записями задач в Ada. Я хочу создать запись задачи с входным параметром типа «это доступ ко всему компьютеру», то есть указатель на тип задачи. Это вообще возможно?Задачи Ada: указатели в записях задач

Я пытался сделать что-то вроде этого:

task type computer; 
type computer_ptr is access all computer;  
task type computer is 
    entry init(a: computer_ptr); 
end computer; 

Это было предложено here. К сожалению, это не работает: GNAT говорит, что объявления «компьютерного» конфликта.

Может ли кто-нибудь подумать о способе достижения того, что я хочу сделать?

ответ

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; 
+0

Спасибо большое за быстрый ответ! Работает отлично! – Xaver

Смежные вопросы