On Fri, 11 Aug 2006 13:42:49 +0200 Florian Klaempfl <[EMAIL PROTECTED]> wrote:
> Mattias Gaertner wrote: > > Recently the behaviour of the 'protected' keyword has changed in fpc 2.1.1. > > Now I wonder how can I fix the code, that depends on this. > > Redesign :) Of FPC? Naaah, too much work. ;) Of my code: Yes, but how? Looking at the Delphi sources, I see that Borland has made many such methods public, which resulted in Code using the VCL the wrong way and creating VCL version dependent conflicts. I want to avoid this, and the old protected allowed that. But now I can't find any good alternative. > > I have some base classes, that defines methods to let derived classes > > interact. > > These methods should not be accessed directly from the outside, so they are > > protected. But this does not work any longer. Of course I can safely > > typecast, but for aesthetic reasons it looks pretty bad coding style to > > typecast a class to the wrong class. For example: > > > > -- unit1 ------------------------- > > TMyClass = class > > FFlag: boolean; > > protected > > procedure InternalSetFlag(b: boolean); > > end; > > > > -- unit2 ------------------------- > > TDescendantClass1 = class(TMyClass) > > public > > procedure CallProtectedMethod(AnObject: TMyClass); > > end; > > > > TDescendantClass2 = class(TMyClass) > > end; > > > > procedure TDescendantClass1.CallProtectedMethod(AnObject: TMyClass); > > begin > > InternalSetFlag(true); // allowed > > AnObject.InternalSetFlag(true); // not allowed any longer > > TDescendantClass1(AnObject).InternalSetFlag(true); // allowed and works, > > but ugly > > > Shouldn't be allowed either imo. What's the alternative? Mattias _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal