On Sat, 18 Nov 2006, Joao Morais wrote:

> Michael Van Canneyt wrote:
> 
> > > > This is the code:
> > > >
> > > >   TPressObject = class(TPressSubject)
> > > >     _Id: TPressString;
> > > >   private  // <- compiler stops here
> > > >     ...
> > > >
> > > > and this is the inheritance:
> > > >
> > > > TPersistent (Classes unit)
> > > > +-TPressStreamable (PressClasses unit)
> > > >   +-TPressSubject (PressSubject unit)
> > > >      +-TPressObject (PressSubject unit)
> > > >      +-TPressAttribute (PressSubject unit)
> > > >        +-TPressString (PressSubject unit)
> > > >
> > > > I also tried to move the member to the published area; declared the
> > > > class
> > > > under the $M+ directive; but no success. Moving the _Id member to the
> > > > private area solves the compilation problem.
> > > The problem is - TPressString is a forward declaration and the compiler
> > > doesn't know that it inherits from TPersistent. Is this the expected
> > > behavior?
> > 
> > Yes. The compiler has no idea that _Id is publishable, and therefor rejects
> > it.
> 
> Thanks Michael.
> 
> But is this the correct behavior, a non implemented feature or a bug? (note -
> Delphi doesn't raise this error)

As far as I'm concerned it's correct behaviour, but you'll have to ask the 
compiler
gurus for confirmation :-)

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

Reply via email to