我需要委托“ceil”功能。我的班级有方法'ceil',它需要返回cpp的本机方法'ceil'。怎么称呼它?
double ceil() {
return ceil();
}
- 这是一个递归
double ceil() {
return ::ceil(something); // ceil actually has an argument
}
当然,以上是在类定义中定义方法的时候;以下内容适用于在类外定义方法时:
double MyClass::ceil() {
return ::ceil(something);
}
正如评论所暗示的,使用std::ceil
from 包含<cmath>
更好,因为确实::ceil
不能保证ceil
来自 C 库。
std::ceil
您可以通过写作来指定您的意思std::ceil
。
假设您包含 C++ 标头,<cmath>
而不是已弃用的 C 标头<math.h>
。在这种情况下,如果您不想包含正确的标头,它位于全局命名空间中并且可以作为::ceil
.
请记住,它需要一个参数,因此您发布的代码即使在限定它之后也不会工作。
在您的自定义 ceil 中使用 std::ceil。
最好有一个演员操作员加倍,因为
operator double() 在您的类中将您的数据转换为 double 并在需要的地方调用 ceil(obj) ,因此,您没有 ceil 作为您的类中的成员,并且您的对象被转换为 double (通过您的 cast 运算符)和std::ceil 被自动调用。