私はセグメンテーションフォルトが発生しているのですが、その理由はわかりません。テンプレートにはかなり新しく、物事を把握しようとするのが面倒です。私はテンプレートを使ってスタックを構築し、これまでメンバー関数pushとtop/peekのみを組み込んでいました。文字列スタックを作成しようとしています。テンプレートスタックが押し込まれていませんか?
#include <iostream>
#include <string>
template <class T>
class TemplateStack {
public:
typedef T type;
TemplateStack()//Default Constructor taking no parameters
{
max_size_ = 50;
TopOfStack = 0;
}
void push(T element)
{
if (TopOfStack == max_size_)
throw string("Stack's underlying storage is overflow");
TopOfStack++;
data_[TopOfStack] = element;
}
T top() {
if (TopOfStack == -1)
throw string("Stack is empty");
return data_[TopOfStack];
}
private:
size_t TopOfStack; //Generic data type for the top element of stack
size_t max_size_;
T* data_;
};
int Main(){
TemplateStack <string> T;
T.push("Hello");
T.push("World!");
std::cout<<T.top()<<std::endl;
return 0;
};
を書くことができ、あなたを編集してくださいセグメンテーションフォルトを引き起こしているステートメントを示すポスト。デバッガがこの十字軍の助けになります。 –
要素を挿入した後に 'TopOfStack' *をインクリメントする必要があります。インデックス値0は、有効なインデックス(最初の要素)です。 –