Ошибка: несовместимые типы операндов
Есть код
#include <iostream>
#include <fstream>
using namespace std;
bool choosing()
{
cout << "Ввод будет через файл или консоль?\n";
int flag;
do
{
cout << "1. Файл.\n";
cout << "2. Консоль.\n";
cin >> flag;
} while(flag != 1 && flag != 2);
if (flag == 1)
return true;
else
return false;
}
void registr(int msv[])
{
cout << "Введите числа в массив (15)\n";
for (int i = 0; i < 15; i++)
{
cout << "Введите " << i+1 << " элемент массива: "; cin >> msv[i];
}
}
void task(int msv[])
{
cout << "Необходимое произведение равно: " << msv[4] * msv[9] * msv[14] << '\n';
for(int i = 4; i < 15; i += 5)
{
for(int j = i; j < 15; ++j)
{
msv[j] = msv[j+1];
}
}
for(int i = 0; i < 15; i++)
{
cout << msv[i] << " ";
}
cout << '\n';
}
int main()
{
int msv [15];
if (choosing == true)
{
}
else
{
registr(msv);
cout << "Задание выполняется.\n";
task(msv);
}
return 0;
}
он еще не готов, но высвечивается ошибка в несовместимости типа операндов bool(*)() и bool и красным подчеркивается строка if(choosing~== true)
Ответы (2 шт):
Автор решения: Space Researcher
→ Ссылка
Измените на вызов функции choosing(). У вас написано choosing == true компилятор думает, что это переменная, а не вызов функции.
У вас должно быть
if(choosing() == true){}
а еще лучше
if(choosing())
а ещё лучше отделить ввод данных пользователем от логики и потом сделать
if(isFileInput()){} //так более очевидно что делает функция по её названию
Автор решения: AlexGlebe
→ Ссылка
Имя choosing компилятор воспринимается как указатель на функцию. А с добавлением скобочек choosing() уже как её вызов.
bool ( * ptr ) ( ) = choosing ;
bool result = choosing ( ) ;
исправьте так :
if (choosing ( ) == true)