[fpc-pascal] Classes and class methods
Marco van de Voort
marcov at stack.nl
Wed Feb 9 12:21:20 CET 2011
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.
More information about the fpc-pascal
mailing list