digitalmars.D.learn - static this() not executed
- =?iso-8859-1?Q?Robert_M._M=FCnch?= (27/27) May 08 2019 // a.d
- =?iso-8859-1?Q?Robert_M._M=FCnch?= (7/30) May 08 2019 That was because I'm starting the D runtime manually and that call came ...
- =?iso-8859-1?Q?Robert_M._M=FCnch?= (7/8) May 08 2019 Forget that... I used my (quite complex code, not exactly reflected in
- Ron Tarrant (5/7) May 09 2019 For future reference, it sounds like what you're after is a
// a.d
module a;
claas A {
static myTemplate!A app;
static this() {
app = new myTemplate!A;
}
}
void startup(State s){
s.app = A.app;
}
// b.d
main(){
State mainState = new State;
startup(mainState);
}
The first problem I have is, that I can set a breakpoint on the static
constructor but it's never executed. Later on startup() is executed but
A.app is NULL. Why is the static constructor not run? I added a shared
too, but same problem.
What I want to achieve is, that one instance of A is created on program
start-up in a way that I can later use it. Or what's the best practice
to instantiate at least one object of a class at startup?
--
Robert M. Münch
http://www.saphirion.com
smarter | better | faster
May 08 2019
On 2019-05-08 17:37:38 +0000, Robert M. Münch said:
// a.d
module a;
claas A {
static myTemplate!A app;
static this() {
app = new myTemplate!A;
}
}
void startup(State s){
s.app = A.app;
}
// b.d
main(){
State mainState = new State;
startup(mainState);
}
The first problem I have is, that I can set a breakpoint on the static
constructor but it's never executed.
That was because I'm starting the D runtime manually and that call came later.
However, A.app is still NULL even after the static constructor run.
--
Robert M. Münch
http://www.saphirion.com
smarter | better | faster
May 08 2019
On 2019-05-08 17:47:35 +0000, Robert M. Münch said:However, A.app is still NULL even after the static constructor run.Forget that... I used my (quite complex code, not exactly reflected in the example) not correctly... works now. -- Robert M. Münch http://www.saphirion.com smarter | better | faster
May 08 2019
On Wednesday, 8 May 2019 at 18:06:35 UTC, Robert M. Münch wrote:Forget that... I used my (quite complex code, not exactly reflected in the example) not correctly... works now.For future reference, it sounds like what you're after is a singleton. There's an example here: https://wiki.dlang.org/Low-Lock_Singleton_Pattern Instantiation is done with get() instead of this().
May 09 2019








Ron Tarrant <rontarrant gmail.com>