Вы пытаетесь передать массив из 50 string
s в sort
, который принимает ссылку на один string
.
Попробуйте объявить сортировку одним из следующих:
void sort( string names[50], int numoftoys[50], int i)
void sort( string names[], int numoftoys[], int i)
void sort( string* names, int* numoftoys, int i)
Если вы сделаете что-то из этого, вам вообще не придется менять вызов функции:
sort (names, numoftoys, i);
Но, на самом деле, просто прекратите использовать необработанные массивы и указатели, как только вы обнаружитеstd::vector<>
в учебе.
РЕДАКТИРОВАТЬ : 2-ой баг.
По какой-то причине у вас есть этот код:
int tmp;
...
tmp = names[t];
Вы объявили tmp
одним типом (int
), но использовали его, как если бы это был другой тип (string
).Нет смысла говорить: «Назначьте копию этого string
внутри этого int
.
. Вы должны объявить tmp
, чтобы иметь соответствующий тип для его использования.
Ps. Как только вы узнаете о std::swap()
, вы можете полностью избавиться от переменной tmp
.