2014-02-25 5:14 GMT-03:00 Sven Barth <pascaldra...@googlemail.com>: > Am 25.02.2014 00:27, schrieb silvioprog: > >> Hello, >> >> I have this structure: >> >> generic TMyGeneric<T> = class >> end; >> >> TMyGenericClass = class of TMyGeneric; >> > That must not compile. This is a bug.
Can you issue it for me friend? I would be thankful. (y) 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? >> > You can't. A generic is by definition not a fully existant type. You can > only work with specializations. > E.g. TFPGList<> circumvents this by having the main implementation of the > list inside a non generic TFPSList type which TFPGList<> derives from. > > Regards, > Sven Thank for this nice information, I didn't know that. -- Silvio Clécio My public projects - github.com/silvioprog
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal