new class howto?
newbee
nospam at nospam.com
Tue Jul 31 13:27:19 PDT 2007
Daniel Keep Wrote:
>
>
> newbie wrote:
> > Frits van Bommel Wrote:
> >
> >> newbie wrote:
> >>> module C
> >>>
> >>> XXX tester = new XXX();
> >>>
> >>>
> >>> it will always generate an error during compilation:
> >>>
> >>> non-constant expression
> >>>
> >>> when i try to do that in a function, then i will get an exception.
> >> You can only use constant expressions as initializers for global
> >> variables, so dynamic memory allocation is disallowed. To do what you
> >> want, use:
> >> ---
> >> module C;
> >>
> >> XXX tester;
> >>
> >> static this() {
> >> tester = new XXX();
> >> }
> >> ---
> > it is seeminglx not possible to call d functions or initialize d classes from a function that is decorated with
> > extern(Windows)
> >
> > extern (Windows) int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
> > testery();
> > DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG_MAIN), null, &Dialog_Main);
> > return 0;
> > }
> >
> >
> > void testery() {
> > XXX testerx = new XXX;
> > testerx.Stop();
> > }
> >
> >
> > how does one call a D function or do a XXX testerx = new XXX; in such a function?
> >
> >
>
> Wait; you're calling this from WinMain?
>
> The code you just supplied will not work because you haven't initialised
> the garbage collector, nor run module ctors, nor run unittests. See
> http://digitalmars.com/d/windows.html for an example of what your
> WinMain should look like.
>
> -- Daniel
that was the wright thing to do - thank you all so much.
More information about the Digitalmars-d-learn
mailing list