Framework design, initialization and framework usage
Robert M. Münch
robert.muench at saphirion.com
Tue May 7 17:21:52 UTC 2019
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
More information about the Digitalmars-d-learn
mailing list