При инициализации current
список пуст.
Добавление элементов в список не делает его действительным итератором, даже если он будет отличаться от end
.
Похоже, вы думаете об итераторах так же, как указатели, но это не так.
Итераторы предназначены для итерации и должны рассматриваться как временные, а не сохраняться для последующего использования.
Использовать вектор и использовать индекс для current
вместо итератора.
Далее, я бы переименовал функции «кнопки» (что касается истории кнопок ?) В «goBack» и «goForward» и использовал бы ваш фактический интерфейс при чтении:
void BrowserHistory::readFile(string filename)
{
ifstream dataIn(filename);
string action;
while (dataIn >> action) {
if (action == "visit") {
string url;
size_t pageSize;
if (dataIn >> url >> pageSize) {
visitSite(url, pageSize);
}
else {
// Handle error
}
}
else if (action == "back") {
goBack();
}
else if (action == "forward") {
goForward();
}
else {
// Handle error
}
}
}