The most annoying problem I have with Pascal currently is with circular unit 
dependanices and “global” classes that need to be referenced from many units. 
In other languages I would make a forward declaration of the class in  one file 
then implement it in another file so that all files could reference the class. 
It’s maybe a symptom of a “bad" design but sometimes it’s just faster and 
easier so it’s a problem I have to fight Pascal to make it work.

When I moved to FPC the solution I started using was this pattern below where I 
make an abstract class then override the methods I need in the global namespace 
within in the “main unit”. This is a bad hack to workaround a feature of the 
language but I wonder if there’s a better way. Does anyone have any ideas I 
could try?

========

"global” unit shared by many other units:

type
  TSomeClassAbstract = class (TObject)
    procedure DoSomething; virtual; abstract;
  end;
  
“main” unit which implements the class:  
  
type
  TSomeClass = class (TSomeClassAbstract)
    procedure DoSomething; override;
  end;


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