我創建了自己的堆棧和重載函數。然而,當我調用函數返回堆棧被損壞,我不明白爲什麼:/我是新來的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」)丟失。 –