Static members and access attribute
Aarti_pl
aarti at interia.pl
Wed Oct 22 05:09:34 PDT 2008
Lars Kyllingstad pisze:
> Uriel wrote:
>> I've found some strange behaviour with static members and haven't
>> noticed anything about it in the documentation.
>>
>> module a;
>>
>> class A
>> {
>> private static int Foo;
>> }
>>
>> import std.stdio;
>>
>> import a;
>>
>> void main()
>> {
>> A.Foo = 1;
>> writeln(A.Foo);
>>
>> /* A obj = new A();
>> obj.Foo = 2;
>> writeln(A.Foo);
>> */
>> }
>>
>> Program will compile and print '1'. But if uncomment the second part
>> of code compiler will say that "class a.A member Foo is not accessible".
>> Is this a bug?
>
> No, that's the way it should be. You get the error because of the line
>
> obj.Foo = 2;
>
> Foo is not available for instances of A. There is only one (global) Foo,
> namely A.Foo. That's what static means.
>
> -Lars
I am not sure about what you say... In Java you can access static
members through objects - you get just warnings. As I said I am not sure
how it is supposed to be in D.
According to accessing private static member from another module - it is
bug. Its already in bugzilla.
BR
Marcin Kuszczak
(aarti_pl)
More information about the Digitalmars-d
mailing list