C++ 模板中的静态强制转换

C++ 模板中的静态强制转换,c++,C++,我有一个带有此静态强制转换操作符的模板: operator Vector2<float>() const { return Vector2<float>(x, y); } 我得到的编译器错误是*从Vector2到float*的静态转换不匹配* 但是,上面指定了转换,不是吗?作为静态强制转换重载?您应该这样使用它: Vector2<float> position = static_cast<Vector2<float>>(Vec

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

operator Vector2<float>() const
{
    return Vector2<float>(x, y);
}
我得到的编译器错误是*从Vector2到float*的静态转换不匹配*


但是,上面指定了转换,不是吗?作为静态强制转换重载?

您应该这样使用它:

Vector2<float> position = static_cast<Vector2<float>>(Vector2<int>(5,5));
Vector2位置=静态施法(Vector2(5,5));

由于声明指定了到
Vector2
的转换,而不是到
float

的转换,因此我在任何地方都看不到
运算符float()const
。这意味着如果要将对象强制转换为
Vector2
,可以。直接向
float
强制转换与此无关。这种隐式转换非常邪恶。至少让它成为一个命名的操作。当一个人不明白发生了什么时,要求在幕后默默地完成事情真的不是一个好主意。啊,谢谢你,这是我的代码中的一个拼写错误,我的眼睛一直在掩盖它。非常感谢
Vector2<float> position = static_cast<Vector2<float>>(Vector2<int>(5,5));