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
。
私はこれを推定して、上記で次のことが正当であることを発見しました:それぞれ値 5 と 4aivec = mydta(5, 4);
を与えます。aivec
コンストラクターにアクセスできるように、この暗黙的な初期化をバイパスする方法はありますthis(int c)
か?