ada - Calling a function passed as an access type that takes no parameters -
consider family of functions take no arguments , return same type:
function puzzle1 return answer_type; function puzzle2 return answer_type; function puzzlen return answer_type;
i'd able pass functions subprogram , have subprogram call function , use result. can pass function subprogram defining access type:
type answer_func_type access function return answer_type;
however, there doesn't seem way call passed-in function result:
procedure print_result(label : in string; func : in not null answer_func_type; expected : in answer_type) result : answer_type; begin result := func; -- expected type "answer_type", found type "answer_func_type" result := func(); -- invalid syntax calling function no parameters -- ... end print_result;
is there way in ada without adding dummy parameter functions?
you trying use pointer function, not function itself. dereference pointer , should well:
procedure main type answer_type new boolean; function puzzle1 return answer_type begin return true; end puzzle1; type answer_func_type access function return answer_type; procedure print_result(label : in string; func : in not null answer_func_type; expected : in answer_type) result : answer_type; begin result := func.all; -- have pointer, dereference it! end print_result; begin print_result ("aaa",puzzle1'access, true); end main;
Comments
Post a Comment