我试图覆盖运算符<<我的堆栈类使它打印所有项目,在这种情况下板,但我收到分段错误。我不知道这意味着什么或如何解决它。
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
答案 0 :(得分:0)
问题在于:
class Stack
{
private:
PlateNode *ptrTop;
int stackCount;
public:
...
Stack(PlateNode top){
*ptrTop = top;
stackCount++;}
您正在取消引用未初始化的指针 - 尝试将某些内容分配给基本上是随机的地址 - 这会导致称为未定义行为的内容,这是一件坏事。你可能意味着这样的事情:
ptrTop = top;
无论如何,你应该尝试养成以小步骤开发新功能(例如新课程)的习惯,每一步都要进行测试。如果你这样做了,你就会知道这种方法存在错误;即使你没有能够立刻发现它,你也会盯着三条线而不是一百五十条。