我创建了自己的堆栈和重载函数。然而,当我调用函数返回堆栈被损坏,我不明白为什么:/我是新来的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;
}
请将此减少到要求的最小*程序以演示此问题。 –
使用调试器,设置断点,观察变量。不要只是转储堆的代码。请参阅[本网站](http://stackoverflow.com/help/how-to-ask)以了解如何针对SO提出优秀问题。 –
......并包括所有需要的,例如类定义(“SStack.h”)丢失。 –