How do you initialize a class instance which has static storage within another class?

anonymous via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Jan 30 14:01:44 PST 2016


On 30.01.2016 22:52, Enjoys Math wrote:
>
> class A { static B b; } class B {}
>
> doing b = new B() does NOT work.
>
> Nor could I create a this() {} at module level

It works when you make b const/immutable:

class A {static immutable B b = new B;} class B {}

If you want/need b to be mutable, you can use a static constructor 
(`static this`), either in the class or the module:

class A {static B b; static this() {b = new B;}} class B {}
class A {static B b;} static this() {A.b = new B;} class B {}

You could also set it in `main` or another function that runs before b 
is used, of course.


More information about the Digitalmars-d-learn mailing list