【发布时间】:2015-02-07 03:32:01
【问题描述】:
我正在尝试为我的堆栈类覆盖运算符
ostream& operator << (ostream &out, Stack &stack){
int a = stack.getStackCount();
string outString = "";
PlateNode temp = PlateNode(stack.getTop().getPlate());
for(int i =0;i<a;i++){
outString = outString + ", " + temp.getPlate().getName();
temp = temp.getNextNode();
}
out << outString;
return out;
}
那是我试图覆盖操作符的地方,我的主要是:
int main()
{
Stack nullStack = Stack();
nullStack.push(pNode);
nullStack.push("me");
cout <<"Reached c"<<endl;
cout<<nullStack;
}
在输入 main 中的最后一行之前,该错误不存在。 请帮忙!
编辑:如果有帮助,这是我的全部代码,抱歉没有完整评论:
https://docs.google.com/document/d/16pg01muz0S5IMlXBahdL-JyVE5y7buzOVHYEOn_jyvE/edit?usp=sharing
【问题讨论】:
-
如果程序崩溃可能是由于您的
Stack类。 -
你的栈类的定义是什么?我怀疑
PlateNode temp = PlateNode(stack.getTop().getPlate());是你的问题,因为你基本上是在创建一个新堆栈。 -
分段错误是由错误的取消引用导致的。您发布的代码不尊重任何东西,因此错误必须在其他地方。你知道如何使用调试器吗?
-
这意味着你试图访问不属于你的内存——通常是滥用数组或指针。要修复它,请在调试器中运行您的程序并逐步执行该函数。
-
我是在 linux 中做的,所以我真的不知道如何调试它