Am 25.02.2014 00:27, schrieb silvioprog:
Hello,
I have this structure:
generic TMyGeneric<T> = class
end;
TMyGenericClass = class of TMyGeneric;
TMyType = class
end;
TMyClass1 = specialize TMyGeneric<TMyType>;
TMyClass2 = class(specialize TMyGeneric<TMyType>)
end;
...
procedure RegisterItem(AItemClass: TMyGenericClass);
begin
end;
OK, but when I try:
RegisterItem(TMyClass1);
Return:
Incompatible type for arg no. 1: Got "Class Of TMyGeneric$TMyType",
expected "TMyGenericClass".
Or:
RegisterItem(TMyClass2);
Return:
Incompatible type for arg no. 1: Got "Class Of TMyClass2", expected
"TMyGenericClass"
So, which syntax to use generic and meta class?
What might work (untested) is this:
=== code begin ===
type
generic TMyGeneric<T> = class
public type
TMyGenericClass = class of TMyGeneric; // in mode Delphi this would
be "class of TMyGeneric<T>"
public
class procedure RegisterItem(aItemClass: TMyGenericClass);
end;
=== code end ===
Regards,
Sven
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal