我的程序出现了一个奇怪的分段错误。Dlist 是一个创建链接列表的类,该链接列表具有从动态列表中插入和删除项目的操作。我很肯定我的这个类的实现是正确的,但是这段代码正在产生一个段错误。奇怪的是,当我让我的 atleastTwo 和 atleastOne 函数通过引用传递时,段错误消失了,一切都编译了。任何人都可以阐明这个问题吗?
bool atleastTwo(Dlist<double> stack){
try{
stack.removeFront();
stack.removeFront();
} catch(emptyList e){
cout << "Not enough operands\n";
return false;
}
return true;
}
bool atleastOne(Dlist<double> stack){
try{
stack.removeFront();
} catch(emptyList e){
cout << "Not enough operands\n";
return false;
}
return true;
}
void processInput(inputs usrInput, Dlist<double> &stack){
switch(usrInput){
case i_add:
if(atleastTwo(stack)){doOperation(stack, add);}
break;
case i_subtract:
if(atleastTwo(stack)){doOperation(stack, subtract);}
break;
case i_multiply:
if(atleastTwo(stack)){doOperation(stack, multiply);}
break;
case i_divide:
if(atleastTwo(stack)){doOperation(stack, divide);}
break;
case i_negation:
if(atleastOne(stack))negation(stack);
break;
case i_duplicate:
if(atleastOne(stack)){duplicate(stack);}
break;
case i_reverse:
if(atleastTwo(stack)){reverse(stack);}
break;
case i_print:
if(atleastOne(stack)){print(stack);}
break;
case i_clear:
clear(stack);
break;
case i_printAll:
printAll(stack);
break;
default:
break;
}
}
T *removeFront();
// MODIFIES this
// EFFECTS removes and returns first object from non-empty list
// throws an instance of emptyList if empty
谢谢