【发布时间】:2017-10-15 20:56:00
【问题描述】:
我不断收到分段错误,不知道为什么。模板很新,我只是在试图弄清楚事情。我使用模板构建了一个堆栈,到目前为止只合并了成员函数 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 是有效索引(作为第一个元素)。