I'm having some trouble understanding how to deal with ambiguity of constructors in D.
struct mydta {
int a = 2;
int b = 3;
this(int c) {
a = c / 2;
b = c * 2;
}
this(float c) {
a = cast(int) c / 2;
b = cast(int) c * 2;
}
static mydta afvec = mydta(4.3);
static mydta aivec = mydta(5);
}
afvec
has the data values 2 and 8.aivec
has the data values 5 and 3.
This means that afvec
called this(float c)
as expected from the syntax.
However aivec
has done an assignment similar to aivec.a = 5
.
I extrapolated on this to find that the following is legal in the above: aivec = mydta(5, 4);
giving aivec
the values 5 and 4 respectively.
Any ideas how to bypass this implicit initialization so I can access my constructor: this(int c)
?