generic unit : compilation error ! please help me
- From: nblanpain@xxxxxxxxxxx
- Date: 24 Feb 2006 01:19:47 -0800
hello,
When i compile the following programm, i have the following error on
function Set_Unit_To_Test of class "child-test_unit.adb" :
"14 : invalid tagged conversion, not compatible with type T_Child'Class
defined at child.ads"
I don't undestand this error : please help me !
## parent.ads ## :
generic
type T_Real is digits <>;
package Parent is
type T_Parent is tagged private;
type T_Parent_Access is access all T_Parent;
private
type T_Parent is tagged record
Real : T_Real;
end record;
end Parent;
## child.ads ##
with Parent;
generic
type T_Real is digits <>;
with package Par is new Parent (T_Real);
package Child is
type T_Child is new Par.T_Parent with private;
type T_Child_Access is access all T_Child;
private
type T_Child is new Par.T_Parent with record
Real2 : T_Real;
end record;
end Child;
## parent-test_unit.ads ##
generic
package Parent.Test_Unit is
subtype T_Unit_To_Test is Parent.T_Parent;
subtype T_Unit_To_Test_Access is Parent.T_Parent_Access;
type T_Unit_To_Test_Class_Access is access all T_Unit_To_Test'Class;
type T_Test_Unit is tagged private;
type T_Test_Unit_Access is access all T_Test_Unit;
procedure Set_Unit_To_Test
(This : in out T_Test_Unit;
Utt : in T_Unit_To_Test_Class_Access);
private
type T_Test_Unit is tagged record
Unit_To_Test : T_Unit_To_Test_Class_Access;
end record;
end Parent.Test_Unit;
## parent-test_unit.adb ##
package body Parent.Test_Unit is
procedure Set_Unit_To_Test
(This : in out T_Test_Unit;
Utt : in T_Unit_To_Test_Class_Access) is
begin
This.Unit_To_Test := Utt;
end Set_Unit_To_Test;
end Parent.Test_Unit;
## child-test_unit.ads ##
with Parent.Test_Unit;
generic
with package Parent_Test_Unit is new Parent.Test_Unit;
package Child.Test_Unit is
subtype T_Unit_To_Test is Child.T_Child;
subtype T_Unit_To_Test_Access is Child.T_Child_Access;
type T_Unit_To_Test_Class_Access is access all T_Unit_To_Test'Class;
type T_Test_Unit is new Parent_Test_Unit.T_Test_Unit with private;
type T_Test_Unit_Access is access all T_Test_Unit;
procedure Set_Unit_To_Test
(This : in out T_Test_Unit;
Utt : in T_Unit_To_Test_Class_Access);
private
type T_Test_Unit is new Parent_Test_Unit.T_Test_Unit with record
Unit_To_Test2 : T_Unit_To_Test_Class_Access;
end record;
end Child.Test_Unit;
## child-test_unit.adb ##
package body Child.Test_Unit is
procedure Set_Unit_To_Test
(This : in out T_Test_Unit;
Utt : in T_Unit_To_Test_Class_Access) is
begin
Parent_Test_Unit.Set_Unit_To_Test
(Parent_Test_Unit.T_Test_Unit (This),
Parent_Test_Unit.T_Unit_To_Test_Class_Access (Utt)); --
error !!!!!!!
This.Unit_To_Test2 := Utt;
end Set_Unit_To_Test;
end Child.Test_Unit;
Thanks,
.
- Follow-Ups:
- Re: generic unit : compilation error ! please help me
- From: Dmitry A. Kazakov
- Re: generic unit : compilation error ! please help me
- From: Stephen Leake
- Re: generic unit : compilation error ! please help me
- Prev by Date: Re: GNAT GPL compile problems
- Next by Date: Re: Quick question about Ada code formatting.
- Previous by thread: help with include and library files in GPS
- Next by thread: Re: generic unit : compilation error ! please help me
- Index(es):
Relevant Pages
|
|