Ada_Ru форум

Обсуждение языка Ада

Tagged types & Generic

Оставить новое сообщение

Сообщения

Vadim Godunko
Tagged types & Generic
2003-09-15 19:15:03

Доброго времени суток!

 

Поводите меня, пожалуйста, носом по RM, почему в первом случае можно настроить подпрограмму, а во втором - нет.

 

 

package Q is

 

type R is abstract tagged limited null record;

 

type R_A is access all R'Class;

 

generic

type T is abstract new R with private;

type T_A is access all T'Class;

function Generic_F (I : R_A) return T_A;

 

 

type X is abstract tagged limited private;

 

type X_A is access all X'Class;

 

type Y is abstract new X with private;

 

type Y_A is access all Y'Class;

 

 

private

 

type X is abstract new R with null record;

 

type Y is abstract new X with null record;

 

end Q;

 

package body Q is

 

function Generic_F (I : R_A) return T_A is

begin

if I.all in R'Class then

return T_A (I);

else

return null;

end if;

end Generic_F;

 

-- так запросто можно

function F is new Generic_F (X, X_A);

 

-- а вот так почему-то низя. Почему?

function F is new Generic_F (Y, Y_A);

-- Объяснение GNAT-3.15p:

-- q.adb:16:04: instantiation error at line 7

-- q.adb:16:04: invalid tagged conversion, not compatible

-- with type "R'Class" defined at q.ads:4

 

end Q;

 

 

-- Vadim Godunko

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти