スタックが空のときに数値を加算しようとすると、スタック プログラムでエラーをスローしようとしています。スタック クラスの最上位関数内で、スタックに何もない場合に備えて例外をスローします。次に、メイン プログラムに try and catch ブロックを作成して、エラーをキャッチし、メッセージを表示します。ただし、以下のエラーが表示され、修正方法がわかりません。
エラー:
terminate called after throwing an instance of 'char const*'
クラス トップ():
const T& top() const throw (std::string){
if(m_next != NULL){
return m_data;
}
else{
throw("Nothing on the Stack");
}
};
int main():
int main(){
string op;
RobotCalc<int>* stack = new RobotCalc<int>;
int operand1;
int operand2;
cin >> op;
while(op != "@"){
if(op == "+"){
try{
operand1 = stack->top();
stack->pop();
operand2 = stack->top();
stack->pop();
stack->push(operand1 + operand2);
}
catch (string e){
cout << e;
}
}
コードには他にもありますが、ここに問題があります。クラス関数には、T 型の m_data (この場合は int) と次の RobotClass (スタックのメンバー) へのポインターの 2 つのメンバー変数があります。これはスタックのリンクリスト バージョンです。