- Код: Выделить всё
program Project1;
Type
{ GenericOne }
Generic GenericOne<T> = Class
Private
Public
Function Hello: T;
End;
Type
{ GenericTwo }
Generic GenericTwo<T, U> = Class
Private
Public
Function Hello: T;
Function Dear: U;
End;
Type
{ GenericThree }
Generic GenericThree<T, U, V> = Class
Private
Public
Function Hello: T;
Function Dear: U;
Function World: V;
End;
Type BRequisiteClass = Class
End;
Type BRequisitesList = Specialize GenericOne<BRequisiteClass>;
Type BRequisitesThreadList = Specialize GenericTwo<BRequisiteClass,
BRequisitesList>;
Type BRequisitesManager = Specialize GenericThree<BRequisiteClass,
BRequisitesList, BRequisitesThreadList>;
Function GenericThree.Hello: T;
Begin
Result := T.Create;
End;
Function GenericThree.Dear: U;
Begin
Result := U.Create;
End;
Function GenericThree.World: V;
Begin
Result := V.Create;
End;
{ GenericOne }
Function GenericOne.Hello: T;
Begin
Result := T.Create;
End;
{ GenericTwo }
Function GenericTwo.Hello: T;
Begin
Result := T.Create;
End;
Function GenericTwo.Dear: U;
Begin
Result := U.Create;
End;
begin
end.
Не компилируется... Меняем на
- Код: Выделить всё
program Project1;
Type
{ GenericOne }
Generic GenericOne<T> = Class
Private
Public
Function Hello: T;
End;
Type
{ GenericTwo }
Generic GenericTwo<T, U> = Class
Private
Public
Function Hello: T;
Function Dear: U;
End;
Type
{ GenericThree }
Generic GenericThree<T, U, V> = Class
Private
Public
Function Hello: T;
Function Dear: U;
Function World: V;
End;
Type BMyClass = Class
End;
Type BMyList = Specialize GenericOne<BMyClass>;
Type BMyThreadList = Specialize GenericTwo<BMyClass, BMyList>;
Type BMyManager = Specialize GenericThree<BMyClass, BMyThreadList, BMyThreadList>;
Function GenericThree.Hello: T;
Begin
Result := T.Create;
End;
Function GenericThree.Dear: U;
Begin
Result := U.Create;
End;
Function GenericThree.World: V;
Begin
Result := V.Create;
End;
{ GenericOne }
Function GenericOne.Hello: T;
Begin
Result := T.Create;
End;
{ GenericTwo }
Function GenericTwo.Hello: T;
Begin
Result := T.Create;
End;
Function GenericTwo.Dear: U;
Begin
Result := U.Create;
End;
begin
end.
Компилируется!!!!! Как быть? ^_^