Ваши функции processArrival
и processDeparture
принимают свои аргументы eventList
и printQueue
по значению.Это означает, что когда вы вызываете их, например, в этой строке:
processArrival(newEvent, inFile, eventList, printQueue);
Копии из eventList
и printQueue
создаются и передаются в функцию processArrival
.Затем функция processArrival
работает с этими копиями, и исходные данные никогда не изменяются.В частности, это означает, что в исходном eventList
никогда не будут удалены какие-либо элементы, поэтому он никогда не будет пустым - он будет просто пытаться обрабатывать первое событие снова и снова.
Решение - передать эти параметры по ссылке .т.е. измените определение processArrival
на
void processArrival(int *newEvent, ifstream &inFile, list<int>& eventList, queue<int>& printQueue)
Обратите внимание на символы &
, которые я вставил до eventList
и printQueue
.Это приводит к тому, что ссылается на исходные данные, а не на копии исходных данных, которые передаются в функцию processArival
.Это означает, что processArrival
будет работать непосредственно с исходными данными так, как вы намереваетесь.Не забудьте также внести соответствующие изменения в processDeparture
.