クラスとスタックの勉強をしていて行き詰まってしまってしまいました。
学校の課題でプログラムの穴埋め課題が出たのですが
#include <iostream.h>
//課題範囲
//スタッククラスの定義
class Stack{
private :
int ryouiki[5];
int pointa;
public :
void push(int);
int pop();
Stack();
};
// コンストラクタ
Stack::Stack()
{
pointa = 0;
};
void Stack::push(int data){
ryouiki[pointa] = data;
pointa = pointa+1;
}
int Stack::pop(){
pointa = pointa-1;
return ryouiki[pointa];
}
//スタッククラスの定義を書く
//課題範囲終了
main()
{
Stack st; ///スタック
int data;
cout <<"data = "; cin >> data; //キーボードから数値を読み取り
st.push(data); //スタックに格納
cout <<"data = "; cin >> data; //このプログラムでは同様のことを
st.push(data); //2度行ってみた
cout <<"データの取り出し"<<endl;
data = st.pop(); cout << data <<endl; //スタックから読みだして表示
data = st.pop(); cout << data <<endl; //スタックから読みだして表示
data = st.pop(); //わざとエラー(アンダーフロー)を起こさせる
return 0;
}
これで提出したところ、
22行目と23行目でアンダーフロー起こらせるとバグってしまうので
直して来なさいと指示を受けました。
どのように直したらいいのか考えてみたもののわからなかったので、
トピックを建てさせてもらいました。
いったい何が原因なのか
出来ればどのように書きなおしたら良いのか
どうか教えていただけないでしょうか。
よろしくお願いします。