On 2019-05-07 09:06:03 +0000, Kagamin said:

struct myFramework {
        myFrameworkAccessor myFWApp;
}

interface myFrameworkApp {
        void init();
}

main(){
        myFramework mf = new myFramework;

        mf.myFWApp.init(); // this bombs because myFWApp is NULL
}

struct myFrameworkAccessor {
        myFrameworkApp instance()
        {
                if(_instance==null)_instance=new myAppCode();
                return _instance;
        }
        myFrameworkApp _instance;
        alias instance this;
}

class myAppCode : myFrameworkApp {
        void init() {...}
}

I had to make some changes:

1. struct myFramework   => class myFramework

2. mf.myFWApp.init() => change into two different steps. Otherwise I get an: Error: no property opCall for type app_framework.myFrameworkApp, did you mean new myFrameworkApp?


import std.experimental.all;

struct myFrameworkAccessor {
        myFrameworkApp instance()
        {
                if(_instance is null) _instance = new myAppCode();
                return _instance;
        }
        myFrameworkApp _instance;
        alias instance this;
}

class myFramework {
        myFrameworkAccessor myFWApp;
}

interface myFrameworkApp {
        void init();
}

class myAppCode : myFrameworkApp {
        void init() {}
}

void main(){
        myFramework mf = new myFramework;
        myFrameworkApp ma = mf.myFWApp;

        ma.init();
}


--
Robert M. Münch
http://www.saphirion.com
smarter | better | faster

Reply via email to