模板中的静态强制转换
Static cast in a template
我有一个静态强制转换操作符的模板:
operator Vector2<float>() const
{
return Vector2<float>(x, y);
}
这对我来说意味着,如果我转换为浮点数,它将返回类的浮点数变体,即使x
和y
是来自整数变体的整数。但显然不是这样的:
作为测试:
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
的转换。
相关文章:
- enable_if转换构造函数(静态强制转换,is_base_of)
- 使用转换器提升 Python 问题 - 静态链接
- 不要使用静态强制转换进行算术转换(cpp-core-guidelines)
- C++实用程序::转换在静态链接库中不起作用
- 静态成员变量不会由 gettext 转换
- C++ 将静态方法转换为简单方法
- 虚拟成员函数的定义是否强制在同一转换单元中动态初始化静态数据成员?
- 如何使用静态多态性在 int 和指针类型之间进行转换?
- 指向 POD 类型的指针之间的静态转换与重新解释转换
- 静态强制转换内的表达式
- 了解类构造函数的静态强制转换
- 如何对以下程序使用静态或动态转换
- 我需要静态转换我的数字模板值吗
- 引用的静态强制转换强制模板实例化,其中不完整的类型很好
- 为什么静态向下转换unique_ptr不安全?
- 将私有结构哈希器运算符转换为静态
- 使用静态转换,因为动态转换失败.不好的做法?
- 尝试向 COM 对象添加另一个接口时出现静态强制转换错误 C2440
- 如何在预处理器 (#if) 中强制转换静态 const 以避免溢出
- 转换静态哈希表到动态哈希表