[fpc-pascal] casting interfaces and objects
Marco van de Voort
marcov at stack.nl
Sun May 18 23:07:12 CEST 2008
> I have two questions about interface usage.
> 1. How interfaces are to handle when casting?
> Theoretically it should be safe to do this:
> TObservable = class
> procedure Register( obsv: IObserver );
> procedure NotifyObservers(param: TParameter);
> fObservers: TFPObjectList;
> procedure TObservable.Register( obsv: IObserver );
No it is not safe. The interface points to an interface table, and you cast
it if it were a class VMT.
Have a look at IInterfaceComponentReference and use/implement the
getcomponent method. Note that this was added post-2.2.0
More information about the fpc-pascal