Редактировать: Я согласен с тем, что комментаторы говорят, что использование std :: pow () вместо литеральной константы не нужно - поэтому для этой конкретной проблемы используйте константу 1.0E-10
;Мое объяснение фактической ошибки, которую вы получили, и способ ее устранения до сих пор остаются.
Это не имеет никакого отношения к вашей #define
.std::pow()
- перегруженная функция, и ни одна из ее перегрузок не принимает (int, int)
в качестве аргументов.Вы должны предоставить аргументы с типами, которые однозначно выбирают перегрузку.В зависимости от типа возвращаемого значения, которое вы хотите, вы, вероятно, захотите выбрать одну из следующих перегрузок:
float pow ( float base, float exponent );
double pow ( double base, int exponent );
long double pow ( long double base, int exponent );
, которую вы можете вызвать следующим образом:
std::pow(10.0f, -10.0f)
std::pow(10.0, -10)
std::pow(10.0L, -10)
соответственно.