从类到双精度的隐式转换
Implicit conversion from class to double
是否可以将给定的类隐式转换为基元类型?特别是双倍。
如果我有课程:
class Angle
{
double value;
Angle(double init_value = 0.0) : value(init_value) {}
double get_value() const {return (value);}
}
无论如何,我可以调用一个函数,例如 std::sin(),并提供类 Angle 的对象,而无需在每次调用时显式获取角度的值?例如:
Angle theta(180.0);
double result = std::sin(theta);
而不必通过以下方式调用 std::sin:
Angle theta(180.0);
double result = std::sin(theta.get_value());
如果有一种方法可以实现此所需功能,我认为它将是通过赋值运算符的运算符重载来实现的。或者也许通过以巧妙的方式定义移动/复制构造函数?
感谢您的任何见解。
在类定义中,您可以定义转换运算符。例如
class Angle
{
//...
operator double() const { return get_value(); }
};
相关文章:
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 转换函数,将 std::数组的双精度作为参数或双精度作为参数单独转换
- 为什么将双精度转换为 int 似乎在第 16 位数字之后将其四舍五入?
- 如何从字符串转换为双精度*
- C++如何将字符串逐行转换为双精度
- 如何防止双精度值到整数的隐式转换
- 如果存在从"双精度"到"T"的转换,则禁用构造函数
- 在C++中将字符串转换为双精度,而无需科学记数法
- 使用从文件(stod、strtod、atof)中提取的数据C++从字符串转换为双精度.csv
- 如何在C++中将字符串转换为双精度?
- 将双精度值转换为 char 变量时字符串流如何工作
- 从二进制流中读取时,将双精度变量的地址转换为 char* 意味着什么?
- 在 c++ 中从双精度转换为字符串
- 如何在C++中将无符号字符缓冲区转换为双精度?
- 从字符串转换为双精度和整数 - C++
- 如何使用按位运算将随机uint64_t转换为范围 (0, 1) 的随机双精度
- 使用 sprintf 和 %g 将双精度转换为字符串的意外结果
- 表达式中应用的转换(双精度为整数)
- 无法转换双精度 - 新运算符
- C++类型转换双精度