static initialization question
    Jarrett Billingsley 
    jarrett.billingsley at gmail.com
       
    Wed Dec 10 14:39:23 PST 2008
    
    
  
On Wed, Dec 10, 2008 at 5:31 PM, Weed <resume755 at mail.ru> wrote:
> code:
>
> import std.stdio;
>
> class MyClass
> {
>    invariant uint a = 0;
> }
>
> void main()
> {
>    static MyClass c = new MyClass;
>    writeln( c.a );
> }
It's not the class member that wants static initialization, it's your
variable declaration.
static MyClass c = new MyClass;
This is illegal because static variables must be initialized with
compile-time constants.  The simple way around this is:
static MyClass c; // defaults to null
c = new MyClass;
Which separates the declaration from initialization.
    
    
More information about the Digitalmars-d-learn
mailing list