У меня возникли проблемы с пониманием того, как бороться с неоднозначностью конструкторов в 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
имеет значения данных 2 и 8. aivec
имеет значения данных 5 и 3.
Это означает, что afvec
вызвал this(float c)
, как и ожидалось из синтаксиса.
Однако aivec
выполнил аналогичное назначениена aivec.a = 5
.
Я экстраполировал это, чтобы выяснить, что в приведенном выше законно следующее: aivec = mydta(5, 4);
дает aivec
значения 5 и 4 соответственно.
Есть идеи, какобойти эту неявную инициализацию, чтобы я мог получить доступ к своему конструктору: this(int c)
?