[英]How to use static_cast with a custom object?
我正在尝试使用看起来很简单的static_cast
,但我无法弄清楚我做错了什么。 我有 Rat 类(用于表示有理数),我想将它转换为双精度数。 然后我可以做double x = Rat(2,3)
(它将 2/3 存储到 x 中)。
要做到这一点,我需要做一个 static_cast 所以我尝试了double x = static_cast<double>(Rat(2,3))
但我得到了错误Cannot convert Rat to double without a conversion operator
。
我该如何解决我的问题?
如果您static_cast
的类型和您static_cast
的类型相关,或者当编译器知道如何执行该static_cast
时,您只能使用static_cast
。
没有转换运算符,无法将 Rat 转换为 double
告诉您Rat
没有允许编译器将其Rat
转换为double
转换运算符。
转换运算符看起来像这样:
struct Rat {
// …
operator double() const {
// … perform a conversion to double …
}
// …
}
根据您是否要允许隐式转换,您需要在operator
前面添加explicit
。
没有explicit
你可以写:
double x = Rat(2,3);
使用explicit
您需要一个演员表:
double x = static_cast<double>(Rat(2,3));
通常首选explicit
,以避免意外强制转换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.