Inheritance problem
spir
denis.spir at gmail.com
Fri Feb 11 15:23:37 PST 2011
On 02/11/2011 11:26 PM, Andrej Mitrovic wrote:
> On 2/11/11, bearophile<bearophileHUGS at lycos.com> wrote:
>> Steven Schveighoffer:
>>
>>> Any code can access any members defined in the current module, regardless
>>>
>>> of access attributes
>>
>> I am not sure if Walter understands how much this rule makes it hard for
>> people not already used to protected/private attributes to understand and
>> learn to use those attributes correctly. The C# compiler doesn't have that
>> rule, and it's much more strict. I think this makes learning the usage of
>> those attributes faster.
>>
>> Bye,
>> bearophile
>>
>
> I think one benefit of the current approach is that we'll be able to
> use free functions which could be called as if they belong to a class
> (if they have that class as the first parameter), since we could use
> the uniform function call (UFC) syntax. But UFC doesn't work with
> classes yet, otherwise we might be able to do this:
>
> module foo;
> import std.stdio;
>
> class Foo {
> private int _x, _y;
> this(int x, int y) {
> _x = x;
> _y = y;
> }
> }
>
> int sumXY(Foo foo) {
> return foo._x + foo._y;
> }
>
> module main;
> import foo;
> import std.stdio;
>
> void main() {
> auto obj = new Foo(10, 10);
> writeln(obj.sumXY()); // using UFC, but doesn't work yet
> //~ writeln(obj._x + obj._y); // not allowed
> }
>
> We could have a bunch of templated functions in the foo module which
> could work with any class inside that module. So it might help out
> against the common God class problem. What do you think?
Interesting. UFC syntax is also criticised (don't remmber on which points
exactly), but it brings with nice side-features.
Denis
--
_________________
vita es estrany
spir.wikidot.com
More information about the Digitalmars-d-learn
mailing list