【发布时间】:2013-01-15 11:32:24
【问题描述】:
我有一个带有这个静态转换运算符的模板:
operator Vector2<float>() const
{
return Vector2<float>(x, y);
}
这对我来说意味着如果我转换为浮点数,它将返回该类的浮点变体,即使 x 和 y 是来自整数变体的整数。但显然不是这样:
作为测试:
Vector2<float>position=static_cast<float>(Vector2<int>(5,5));
我收到编译器错误 *No matching conversion for static_cast from Vector2 to float*。
然而,转换是上面指定的,不是静态转换重载吗?
【问题讨论】:
-
我在任何地方都没有看到
operator float() const。 -
这意味着如果你想将你的对象转换为
Vector2<float>,你可以。直接投射到float与此无关。 -
这种隐式转换非常邪恶。至少让它成为一个命名操作。当一个人不明白发生了什么事情时,要求在幕后默默地做事情真的不是一个好主意。
标签: c++