Как вызвать функцию ceil в c ++ из функции ceil моих классов

Мне нужно делегировать функцию «ceil».
В моем классе есть метод ‘ceil’, который должен возвращать нативный метод cpp ‘ceil’.
Как это назвать?

double ceil() {
return ceil();
}

— это рекурсия

1

Решение

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

Конечно, это выше, когда вы определяете метод внутри определения класса; следующее для определения метода вне класса:

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

И, как следует из комментария, используя std::ceil из включенного <cmath> лучше, потому что действительно ::ceil не гарантируется быть ceil из библиотеки C.

5

Другие решения

Вы можете указать, что вы имеете в виду std::ceil написав std::ceil,

Это предполагает, что вы включаете заголовок C ++, <cmath> не устаревший заголовок C <math.h>, В этом случае, и если вы не хотите включать правильный заголовок, он находится в глобальном пространстве имен и доступен как ::ceil,

Помните, что для этого требуется аргумент, поэтому опубликованный вами код не будет работать даже после его проверки.

3

Используйте std :: ceil внутри вашего настроенного ceil.

Лучше было бы иметь оператор удвоения, как

оператор double ()
в вашем классе, чтобы преобразовать ваши данные в double и вызывать ceil (obj), где это необходимо, поэтому у вас нет ceil в качестве члена в вашем классе, и ваш объект преобразуется в double (через оператор приведения) и std :: ceil вызывается автоматически.

1