При попытке пузырьковой сортировки инвентаря, хранящегося в массиве структур, я получаю две разные ошибки при компиляции кода ниже:
void SORT_INVENTORY(Books* list, int max, int position)
{
bool swap;
string temp;
do
{
swap = false;
for (int count = 0 ; count < (position - 1) ; count++)
{
if ( tolower(list[count].Title) > tolower(list[count + 1].Title))
{
temp = list[count];
list[count] = list[count + 1];
list[count + 1] = temp;
swap = true;
}
}
} while (swap);
Я хочу использовать tolower для сравнения элемента Title двух массивов структур. Однако компилятор не позволяет мне запустить программу, потому что он говорит, что нет подходящей функции для вызова tolower.
Когда я переключаю оператор if на это:
if ( ::tolower(list[count].Title) > ::tolower(list[count + 1].Title))
Сообщение «функция не соответствует» исчезает, но заменяется новым: невозможно преобразовать «строку» (также известную как «базовая_строка, распределитель >») в «целое число».
Наконец, я получаю последовательное сообщение об ошибке, касающееся statments в теле оператора if, в котором говорится, что нет жизнеспособных перегруженных '=' в temp = list[count]
и list[count + 1] = temp
.
И последняя деталь: list — это массив, объявленный как тип данных struct. Что я делаю не так?