У меня есть этот кусок кода, который выдает исключение, когда верхний указатель равен нулю. Тем не менее, он входит в оператор if и сразу же вызывает ошибки. Я нигде не меняю значения этого указателя и по отладке знаю, что он входит в оператор.
std::string LinkedStack::pop() {
if (!top) {
throw (std::out_of_range(""));
}
//...
Это часть уловки, я не могу отредактировать это, как это было предоставлено моим профессором для назначения.
try {
testStack.pop();
std::cout << "FAIL: should have thrown exception from pop"<< std::endl;
}
catch(std::out_of_range& e){
printAssertEquals("Can't pop from an empty stack", e.what());
}
Я использую Clion IDE и запускаю машину с Windows, если это вообще имеет значение. У меня такое чувство, что это может быть системной проблемой, поскольку все, с кем я разговаривал, не могли понять, в чем проблема. Спасибо!
РЕДАКТИРОВАТЬ: также это выходное сообщение, которое он печатает при сбое, хотя я вижу, что это segfault в отладчике:
прекращение вызова после выброса экземпляра 'std :: out_of_range'
то, что ():
Процесс завершен с кодом выхода 3