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