0

この静的キャスト演算子を使用したテンプレートがあります。

operator Vector2<float>() const
{
    return Vector2<float>(x, y);
}

これは、float としてキャストすると、xyが整数バリアントの整数であっても、クラスの float バリアントを返すことを意味します。しかし、明らかにそうではありません:

テストとして:

Vector2<float>position=static_cast<float>(Vector2<int>(5,5));

*Vector2 から float への static_cast の一致する変換がありません* というコンパイラ エラーが発生します。

しかし、変換は静的キャストのオーバーロードとして上記で指定されているのではないでしょうか?

4

1 に答える 1

2

次のように使用する必要があります。

Vector2<float> position = static_cast<Vector2<float>>(Vector2<int>(5,5));

宣言では、への変換Vector2<float>ではなく、への変換が指定されているためfloatです。

于 2013-01-15T11:35:58.297 に答える