gpt4 book ai didi

c++ - 我在使用链表的堆栈上出错。无法打印数字循环。 (C++)

转载 作者:行者123 更新时间:2023-11-30 02:07:22 24 4
gpt4 key购买 nike

$ 我有以下错误: 44 E:\Assignment 2.cpp 与 'std::cout < (&number)->newstack::push(x)' 中的 'operator<<' 不匹配

$ 我正在使用链表将数字放入包含结构的类堆栈中。打印出包含这些数字的堆栈。但是错误不允许我将它们打印出来。

 #include <iostream>
using namespace std;

typedef int itemType;


class newstack
{

private:
Using a struct of nodes which contains a item and pointer to the next node.

struct node
{

itemType item;
node *next;
};

node *top; //pointer to the top node.
public:

void push(itemType newItem); //adds items to newstack

};




int main()

{
newstack number;
int x;

cout<< "Number Stack" <<endl;

for (x=0;x<=9;x++)

cout<<(number).push(x)<<endl; //ERROR LINE
//Takes 9 integers and adds them to the stack by printing them out.
return 0;

}


void newstack::push(itemType newItem)
// Precondition: Stack is empty.
//Postcondition: Stack contains a itemType at the top and list or stack implements by 1.
{
if(top!=NULL)
node *newTop;
newTop=new node;
(*newTop).item=newItem;
(*newTop).next=top;
top=newTop;

}

最佳答案

在您的 push() 函数中,您将返回 Void。然而你试着写下函数返回的值到命令提示符 - 要么改变你的推送功能返回一个值或 cout << stack.pop();

进一步:
您需要为您的 newstack 类重载 << 运算符才能编写如下内容:

newstack obj;
cout<<obj;

<<仅针对内置数据类型而不是自定义类类型重载。

你需要像这样重载它:

std::ostream& operator<<(std::ostream& os, const newstack& obj);

关于c++ - 我在使用链表的堆栈上出错。无法打印数字循环。 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7958796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com