У вас обычная проблема newb ie с указателями и массивами. Возьмем, к примеру, этот код
void sort(roomType rooms[roomamt]) {
int n = sizeof(rooms)/sizeof(rooms[0]);
sort(rooms, rooms+n, comparePrice);
}
В этом коде rooms
- указатель. Это может выглядеть как массив, но это не так. В C ++ невозможно сделать массив параметром функции. Таким образом, компилятор меняет roomType rooms[roomamt]
на roomType* rooms
. Из-за этого sizeof(rooms)
- это размер указателя, а не массива, поэтому ваш расчет размера массива неверен.
Но в вашем случае это легко исправить, просто используйте roomant
void sort(roomType* rooms) {
sort(rooms, rooms + roomamt, comparePrice);
}
Обратите внимание, здесь я изменил код, чтобы показать rooms
как указатель, которым он является на самом деле.
Однако даже без этого исправления я не понимаю, почему ваш код будет треснуть sh (или не удалось скомпилировать).