Estoy teniendo algunos problemas para entender cómo hacer frente a la ambigüedad de constructores en D.ambiguo Struct constructores en 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
tiene valores de los datos 2 y 8.aivec
tiene los datos valores de 5 y 3.
Esto significa que afvec
llamados this(float c)
como se esperaba de la sintaxis.
Sin embargo, aivec
ha cumplido una misión similar a aivec.a = 5
.
He extrapolado en esto para encontrar que el siguiente es legal en el antedicho: aivec = mydta(5, 4);
dando aivec
los valores 5 y 4 respectivamente.
Alguna idea de cómo pasar por alto esta inicialización implícita para que pueda acceder a mi constructor: this(int c)
?
Un flotante también podría ser 5 por lo que no sabe qué constructor usar. Prueba agregar un cast a uno de ellos. – Kevin
Ese no es el problema, el problema es que si uso un int, llama a una inicialización implícita en lugar del constructor 'this (int c)' que quiero que llame. – dcousens