@ksimdexxx

Как изменить код чтобы он работал?

Сразу хочу сказать, что программирование я начал изучать буквально неделю назад, так что извините. Хотел потренироваться и посмотреть как работает команда max и при этом использовать классы. Суть программы в том что она просто должна показать наибольшее число. Но вылазят ошибки:

1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\xutility(1481,5): error C2056: illegal expression
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\xutility(1481,48): error C2064: term does not evaluate to a function taking 2 arguments
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\xutility(1481,39): error C2056: illegal expression

Если нажать на них два раза, то покажет, что ошибка здесь(в файле xutility):
noexcept(_Pred(_Left, _Right)) && noexcept(_Pred(_Right, _Left)))


Вот сам код

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;

class maxnumber
{
public:
	void max1(int b, int c, int d) //должна при вызове, присваивать "а" максимальное значение из трех вводимых переменных
	{
		
	    a = max(b, c, d);
	}
	int getNumber()
	{
		return a; // при вызове возвращает значение "а" 
	}
	void displayMessage()
	{
		cout << "The biggest is:" << getNumber() << endl;// пишет какое число наибольшее(финальный ответ)
	}
private:
	int a;
};
int main()
{

	int b, c, d;// вводимые переменные
    maxnumber obj1;
	cout << "Enter numbers:" << endl;
	cin >> b;
	cin >> c;
	cin >> d;
	obj1.max1(b,c,d);// вызывает 1-ю команду и присваивает "а" наибольшее значение из переменных
	obj1.displayMessage();// вызывает 3-ю команду 
	cout << endl;
	
	return 0;

}
  • Вопрос задан
  • 207 просмотров
Решения вопроса 1
sfi0zy
@sfi0zy
Creative frontend developer
term does not evaluate to a function taking 2 arguments


a = max(b, c, d);

Стандартная функция max из algorithm не имеет варианта для поиска наибольшего из трех чисел в таком виде. Есть для двух. Если нужно для трех - вам придется написать такую функцию самостоятельно. Ну или загуглите "cpp max of 3 numbers".
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
myjcom
@myjcom Куратор тега C++
Как изменить код чтобы он работал?

Например так
//... 
a = max({b, c, d});
//...


std::max

Third version
template< class T >
T max( std::initializer_list<T> ilist );

может принимать initializer_list
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы