Hi, 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 public procedure Register( obsv: IObserver ); private procedure NotifyObservers(param: TParameter); fObservers: TFPObjectList; end; procedure TObservable.Register( obsv: IObserver ); begin fObservers.add(TObject(obsv)); end; When using a cast from an interface to an object the compiler warns about the class types "TObject" and "IObserver" not being related. Since an implementor of in interface always will be a class type and any class type at least inherits from TObject, I assume it is okay? Is there a better method of handling this case? 2. Will an interface and a class with the same signature but not explicitely implementing this interface be runtime-compatible and interchangably usable? Smth. like this: IObserver = Interface procedure Notify( param: TParameter ); end; TObserver = class public procedure Notify( param: TParameter ); virtual; abstract; end; Is it legal to use one or the other when e.g. handing over an observer to a method having an IObserver as argument? TIA, Marc _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal