Учусь программировать на c++. Возникла странная ошибка при работе с функциями:
cannot resolve overloaded function 'max' based on conversion to type 'double'
Сам код:
#include
}
}
int main() {
cout <<"max value:"<< maxi(max);
return 0;
}
При очистке параметра max уже в функции main выдается другая ошибка.
Ответ
В этом предложении
cout <<"max value:"<< maxi(max);
^^^
вы используете имя max, которое вы не определили. С другой стороны, благодаря директиве
using namespace std;
вы вводите имена из пространства std в глобальное пространство имен. Видимо имя max, которое соответствует стандартному адноритму std::max в пространтсве имен std также было включено в глобальное пространство имен, и компилятор думает, что в предложении, показанном выше вы в качестве аргумента используете функцию max
Объявите переменную max в main
Обратите внимание, что в функции maxi значение аргумента не используется. Оно перезаписывается в функции
void maxi(double max) {
int i;
i=0;
float y[5]={3,-2,0.9,0.5,1};
max = -999999;
^^^^^^^^^^^^^^
Так что нет никакого смысла объявлять параметр для функции, если его значение в функции не используется. Вы могли бы объявить локальную переменную в функции, как, например,
void maxi() {
int i;
i=0;
float y[5]={3,-2,0.9,0.5,1};
double max = -999999;
^^^^^^^^^^^^^^^^^^^^^
Кроме того в предложении
cout <<"max value:"<< maxi(max);
вы пытаетесь использовать результат работы функции. Поэтому функция должна иметь возвращаемое значение отличное от void. Ее определение могло бы выглядеть следующим образом
double maxi()
{
int i;
i=0;
double y[5]={3,-2,0.9,0.5,1};
^^^^^^
double max = -999999;
//...
return max;
}
Также нет никакого смысла объявлять переменную i вне цикла, так как она используется только в цикле.
Имейте в виду, что в C++ уже имеется стандартный алгоритм std::max_element, объявленный в заголовке
Комментариев нет:
Отправить комментарий