link error for 2+ static this()

BCS BCS at pathlink.com
Wed Jun 7 09:05:20 PDT 2006


This is the behavior I would expect. If there is some sort of technical 
problem with multiple constructors than how can you have several static 
class constructors? I would expect that whatever is done to sequence 
these would be trivially expendable to module constructors.

I would like to see this ability. in some cases it would greatly improve 
the readability of code.

Example:

<code>
int[] someStaticDataSet;
static this(){/* set up someStaticDataSet */ }

int useThis(int i){/* function uses someStaticDataSet */ return value;}

Object[int] someStaticAA;
static this(){/* seeds someStaticAA */ }

bool PutThere(Object o, int i)
	{/* function uses someStaticAA */ return false;}
Object GetThat(int i)
	{/* function uses someStaticDataSet */ return obj;}
</code>

Lumping the two constructors together serves no purpose from a 
readability standpoint.

Johan Granberg wrote:
> Derek Parnell wrote:
> 
>> It doesn't for me. I thought that meant that if one has more than one 
>> static constructor in a module then they run in lexical order. For 
>> example ....
>> ...
>> --Derek Parnell
>> Melbourne, Australia
> 
> 
> Ok in that case dmd and gdc have implemented this differently
> 
> this code compiled with gdc-0.18
> 
> //begin test.d
> uint a=0,b=0;
> static this()
> {
>     a=1;
> }
> static this()
> {
>     b=2;
> }
> void main()
> {
>     printf("%i, %i\n",a,b);
> }
> //end test.d
> prints this
> 1, 2



More information about the Digitalmars-d-bugs mailing list