Мне сложно понять, как бороться с неоднозначностью конструкторов в 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)
?