Static members and access attribute
Lars Kyllingstad
public at kyllingen.NOSPAMnet
Wed Oct 22 04:48:54 PDT 2008
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
More information about the Digitalmars-d
mailing list