Конструкторы неоднозначных структур в D

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

6
задан deceleratedcaviar 31 May 2011 в 07:53
поделиться