array[i] = swap;
Эта строка вызывает проблемы.Лучше изменить имя локальной переменной swap
, поскольку уже существует функция с тем же именем в пространстве имен std
, которое вводится в область с помощью строки using namespace std;
, которую в любом случае следует избегать.
Я бы также предложил вам объявить переменную внутри блока if, где она фактически используется:
if(array[i] > array[i + 1])
{
//declare temp here where it is actually used!
int temp = array[i + 1];
array[i + 1] = array[i];
array[i] = temp;
}
Рекомендация: уменьшите локальные переменные области путем задержкиих декларации, что означает объявить их, где они на самом деле используются.Не объявляйте их в начале функции.
Другой способ исправить проблему в вашем коде - дать компилятору контекст , который вы можете сделать, выполнив это ( хотяЯ бы не предложил это решение, просто вам нужно знать ):
array[i] = (int)swap; //giving compiler contextual type information
Когда вы приводите swap
к int
, компилятор может знать, что swap
относится клокальная переменная, а не функция, определенная в std
пространстве имен.