> On Apr 14, 2016, at 5:51 PM, Tony Whyman <tony.why...@mccallumwhyman.com> 
> wrote:
> 
> unit unitA;
> 
> interface
> 
> type
> 
> class TClassA
> private
>  FClassBObject: TObject;
> public
>  procedure SomeProc;
> end;
> 
> implementation
> 
> uses unitB;
> 
> Maybe I’m doing something stupid but other languages have forward 
> declarations so I wonder why Pascal isn’t doing this also since it seems like 
> the obvious solution.
> 
> 
> procedure TClassA.SomeProc;
> begin
>  TClassB(FClassBObject).OtherProc;
> end;
> 
> end.
> 
> unitB is pretty similar.
> 
> As long as you make sure that FClassBObject really is a TClassB object when 
> it is assigned, the above should all work. The only extra effort is with the 
> TClassB(...) wrapper for each reference to FClassBObject.

I use forward declarations sometimes but of course they need to be in the same 
block so they don’t solve this problem.

Yeah type casting. :) Like interfaces they work but they add a significant 
overhead and clutter (especially if they need to be used with dozens of methods 
in a unit) so that’s why I’m seeing if there’s a better way. However I think I 
like your idea of using them in conjunction with the uses in the implementation 
instead of my "abstract class" solution. Thanks for the tip.

Regards,
        Ryan Joseph

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to