Мне нужно делегировать функцию «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
из включенного <cmath>
лучше, потому что действительно ::ceil
не гарантируется быть ceil
из библиотеки C.
Вы можете указать, что вы имеете в виду std::ceil
написав std::ceil
,
Это предполагает, что вы включаете заголовок C ++, <cmath>
не устаревший заголовок C <math.h>
, В этом случае, и если вы не хотите включать правильный заголовок, он находится в глобальном пространстве имен и доступен как ::ceil
,
Помните, что для этого требуется аргумент, поэтому опубликованный вами код не будет работать даже после его проверки.
Используйте std :: ceil внутри вашего настроенного ceil.
Лучше было бы иметь оператор удвоения, как
оператор double ()
в вашем классе, чтобы преобразовать ваши данные в double и вызывать ceil (obj), где это необходимо, поэтому у вас нет ceil в качестве члена в вашем классе, и ваш объект преобразуется в double (через оператор приведения) и std :: ceil вызывается автоматически.