gpt4 book ai didi

c++ - 如何对自定义对象使用static_cast?

转载 作者:行者123 更新时间:2023-12-03 07:09:17 28 4
gpt4 key购买 nike

我正在尝试使用看似简单的static_cast,但无法弄清楚自己在做什么错。我有Rat类(用于表示有理数),我想将其转换为double。然后我可以做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

Cannot convert Rat to double without a conversion operator


告诉您没有 Rat的转换运算符,它允许编译器将其强制转换为 double
转换运算符的外观如下:
struct Rat {
// …
operator double() const {
// … perform a conversion to double …
}
// …
}
根据是否要进行隐式转换,需要在 explicit前面添加 operator
没有 explicit,您可以编写:
double x = Rat(2,3);
使用 explicit,您需要强制转换:
double x = static_cast<double>(Rat(2,3));
通常,首选 explicit,以免发生意外转换。

关于c++ - 如何对自定义对象使用static_cast?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64747864/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com