1

我需要委托“ceil”功能。我的班级有方法'ceil',它需要返回cpp的本机方法'ceil'。怎么称呼它?

double ceil() {
return ceil();
}

- 这是一个递归

4

3 回答 3

5
double ceil() {
    return ::ceil(something); // ceil actually has an argument
}

当然,以上是在类定义中定义方法的时候;以下内容适用于在类外定义方法时:

double MyClass::ceil() {
    return ::ceil(something);
}

正如评论所暗示的,使用std::ceilfrom 包含<cmath>更好,因为确实::ceil不能保证ceil来自 C 库。

于 2014-04-14T12:38:32.193 回答
3

std::ceil您可以通过写作来指定您的意思std::ceil

假设您包含 C++ 标头,<cmath>而不是已弃用的 C 标头<math.h>。在这种情况下,如果您不想包含正确的标头,它位于全局命名空间中并且可以作为::ceil.

请记住,它需要一个参数,因此您发布的代码即使在限定它之后也不会工作。

于 2014-04-14T12:40:08.913 回答
1

在您的自定义 ceil 中使用 std::ceil。

最好有一个演员操作员加倍,因为

operator double() 在您的类中将您的数据转换为 double 并在需要的地方调用 ceil(obj) ,因此,您没有 ceil 作为您的类中的成员,并且您的对象被转换为 double (通过您的 cast 运算符)和std::ceil 被自动调用。

于 2014-04-14T12:49:26.947 回答