In our previous episode, Mark Morgan Lloyd said: > Is it possible to put a class (not an instance) in a variable or array > element, and to use this to call a class method? > > I'm defining a hierarchy of classes and it would be convenient if it > were possible to register the fact that a class had a particular > subclass, such that the information was available before instantiation. > > I'm assuming that the code that inspects the array has imported all > units so is aware of the relevant class declarations, but I am still > having problems with calling class methods and/or casting to a class (as > distinct from an instance).
Afaik this route you can only call static methods of the basetype of the class-type. So if it is A= class end; b=class(a) end; c=class(b); TClasstype = class of B; var x : TClasstype; begin x:=C; x.staticmethod then staticmethod must be visible in B. It doesn't matter which descendant of B you assign to X. This is logical, since static methods are entirely compiletime, and the compiler can't know what type will be runtime assigned. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal