[fpc-devel] Circular references and forward declarations
Jonas Maebe
jonas.maebe at elis.ugent.be
Tue Jan 5 17:14:53 CET 2010
On 05 Jan 2010, at 17:07, Juha Manninen wrote:
> Forward declaration of a class is allowed inside a unit. There can
> be a
> reference to a class before it is defined! Like:
> TMyClass = class;
>
> Why is it not allowed from another unit? They are conceptually the
> same thing!
The reason that they are conceptually not the same thing is that in
Pascal two different units can both declare a different class with the
same name (just like they can both have global variables and
procedures/functions in the interface with the same name). You would
at least have to do something like one of the following
a) use one global name space for all classes (i.e., forbid that two
different units used in a program declare a class with the same name
anywhere), or
b) add some way to specify the unit name in which this external class
is specified, or
There might be other solutions (maybe some kind of class-specific
namespace support), but it would definitely require some more language
features rather than merely accepting anonymous class definitions
anywhere. Otherwise the type checking is going to run completely
haywire.
Jonas
More information about the fpc-devel
mailing list