Sorry if this is the wrong place to discuss language issues.
I saw the following on the ADUG Delphi list and wondered if there was a possible Lazarus feature here.
Cheers Lance ------------------------------------------------------------------------------------------------ > How can you avoid circular references with two modules that > interact with each other? This has been discussed before in the Delphi newsgroups and it has been requested of BIBCE (Borland/Inprise/Borland/CodeGear/E9o) several times. IIRC there may be a QC entry. Basically it should be possible with a minor language change and not too much effort from the compiler team. Something like: unit ParentObject; interface TChild = forward class; // My made-up syntax // or TChild = implementation class; or some other syntax! TParent = Class public property Child :TChild; end; implementation uses ChildObject; // Nothing special here, only need the love one-way // but you could do it both ways if you want unit ChildObject; interface uses ParentObject; TChild = Class public property Parent :TParent; end; "TChild = forward class" tells the compiler that TChild is a class, and the complete type information is known in the implementation section (which the compiler can validate). That's all the compiler needs to know in the interface section - essentially it needs to know the kind and size of the type. It doesn't require a two-pass compiler or any other extreme make-over. This feature is often needed and the "if you need to do that then something is wrong with your design" argument doesn't fly with me. It's one of the C++ features that I wish Delphi had. I'm holding out for D2011 - perhaps the new compiler will have it! -- _______________________________________________ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus