【发布时间】:2014-03-06 23:04:24
【问题描述】:
我创建了自己的堆栈和一个重载函数。但是,当我调用该函数时,返回堆栈已损坏,我无法弄清楚原因:/我是 C++ 新手,很想学习!这是我的代码
主要
int main(){
string line;
SStack s1(1000);
SStack s2(1000);
int cap = s1.getCapacity();
cout << "Is the stack empty? " << s1.IsEmpty() << "\n";
cout << "The capacity of the stack is: " << cap << "\n";
ifstream myfile("all.last.txt");
cout << "s1 begin pushing: \n";
for (int i = 0; i <= 500; i++){
getline(myfile, line);
cout << "Pushing " << line << "\n";
s1.push(line);
}
cout << "s2 begin pushing: \n";
for (int i = 0; i <= 50; i++){
getline(myfile, line);
cout << "Pushing " << line << "\n";
s2.push(line);
}
myfile.close();
cout << "Is the stack empty? " << s1.IsEmpty() << "\n";
string top = s1.top();
cout << "The top object on the stack is: " << top << "\n";
cout << "The size of the stack is: " << s1.size() << "\n";
cout << "Popping: " << s1.pop() << "\n";
cout << "Size after pop is: " << s1.size() << "\n";
s1 = s1 + s2;
cout << s1.top();
}
不返回的SStack函数
SStack::SStack(const SStack& s) : used(-1), Capacity(0), DynamicStack(0){
*this = s;
}
SStack SStack::operator=(const SStack& s){
if (this != &s){
int cap = s.getCapacity();
DynamicStack = new string[cap];
Capacity = cap;
used = -1;
for (int count = 0; count < s.size(); count++){
DynamicStack[count] = s.DynamicStack[count];
used++;
}
}
return *this;
}
SStack SStack::operator +(const SStack& s2){
int size1 = used + 1;
int size2 = s2.size();
SStack result = *this;
if (size1 + size2 <= Capacity){
for (int count = 0; count < s2.size(); count++){
result.push(s2.DynamicStack[count]);
}
return result;
}
else{
cout << "Error stack is not big enough";
return result;
}
【问题讨论】:
-
请将此减少到演示问题所需的最低程序。
-
使用调试器,设置断点,观察变量。不要只是转储大量代码。请参阅this site 了解如何就 SO 提出好的问题。
-
... 并包含所有需要的内容,例如缺少类定义(“SStack.h”)。
-
我已经使用了断点,但仍然无法找出问题所在。堆栈添加正确,但当它返回时调用析构函数并删除所有信息
-
哪个函数没有返回?
标签: c++ stack overloading