Martin Schreiber wrote:
On Friday 11 August 2006 20.35, Marc Weustink wrote:
What's the alternative?
To have most of internal procedures public with a comment "for internal
use only", I really don't like it, or to have all code in a single file,
I don't like it too.
What about "friend units'?
Or something like as it is "solved" in delphi with helper classes (p215).
(Maybe we can also implement the strict version (p168))
http://info.borland.com/techpubs/delphi/Delphi2006/Reference.pdf
It seems that FPC 2.1.1 implements the behaviour of Delphi 2006 'strict
protected' by default.
I don't think so, the delphi 2006 strict syntax is more strict.
The example you gave below is (afaik) still possible in FPC, which
wouldn't if it was strict.
Marc
In MSEgui I have the problem that there is too much low level stuff to fit in
one unit and the dependences are too complex to be mapped into a simple class
hierarchy. Up to time I did as follows to access low level elements of
classes in other units:
"
implementation
type
TLowLevelClassInOtherUnit1 = class(TLowLevelClassInOtherUnit);
procedure TLowLevelClassInThisUnit.DoSomething;
begin
TLowLevelClassInOtherUnit1
(InstanceOfTLowLevelClassInOtherUnit).DoSomethingProtected;
end;
"
It is ugly, produces warnings and is possibly forbidden in FPC 2.1.1 (I don't
know). A more elegant solution would be to have something like 'friend units'
where protected class members are visible:
"
unit secondlowlevelunit;
interface
uses
firstlowlevelunit,highlevelunit;
friends //use appropriate keyword and notation
firstlowlevelunit;
"
-> In "secondlowlevelunit" all protected class members of "firstlowlevelunit"
are visible, protected class members of "highlevelunit" are visible in
descendant classes.
Martin
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal