模板中的静态强制转换

Static cast in a template

本文关键字:转换 静态      更新时间:2023-10-16

我有一个静态强制转换操作符的模板:

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

这对我来说意味着,如果我转换为浮点数,它将返回类的浮点数变体,即使xy是来自整数变体的整数。但显然不是这样的:

作为测试:

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

我得到编译器错误的*没有匹配转换为static_cast从Vector2到float*。

然而,上面指定的转换不是作为静态强制转换重载吗?

你应该这样使用:

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

因为声明指定了到Vector2<float>的转换,而不是到float的转换。