C++ 将字符推入堆栈不起作用

C++ 将字符推入堆栈不起作用,c++,class,stack,C++,Class,Stack,我想用链表做一堆字符 所以我为stack和node创建了两个类 但当我试图将字符推入堆栈时: stack->push('x') 它不工作,并给出以下两个错误:应为标识符,应为类型说明符 class stack { private: node* top; int size; public: stack() { top = NULL; size = 0; } node* gettop() { re

我想用链表做一堆字符

所以我为stack和node创建了两个类

但当我试图将字符推入堆栈时:

stack->push('x')
它不工作,并给出以下两个错误:应为标识符,应为类型说明符

    class stack
    {
    private:
        node* top;
        int size;
    public:
        stack() { top = NULL; size = 0; }
        node* gettop() { return top; }
        int getsize() { return size; }
        void settop(node* t) { top = t; }
        void setsize(int s) { size = s; }
        bool isempty() { return getsize() == 0; }
        char gettopelement() { return top->getdata(); }
        void push(char x){   top = new node (x, top);
    size += 1; }

        char pop() {

if (isempty() == true)
        cout << "erorr stack is empty";

    else {

        node* p = top;
        char temp = gettopelement();
        top = top -> next;
        delete p;
        size -= 1;
        return temp;

    }
}

    };


class node
{
public:
    char data;
    node* next;
    node(char d) { data = d; next = NULL; }
    node(char d, node* n) { data = d; next = NULL; }
    int getdata() { return data; }
    node* getnext() { return next; }
    void setdata(char d) { data = d; }
    void setnext(node* n) { next = n; }
    
};
类堆栈
{
私人:
节点*顶部;
整数大小;
公众:
堆栈(){top=NULL;size=0;}
node*gettop(){return top;}
int getsize(){return size;}
void settop(node*t){top=t;}
void setsize(int s){size=s;}
bool isempty(){return getsize()==0;}
char gettopelement(){return top->getdata();}
void push(char x){top=新节点(x,top);
大小+=1;}
char pop(){
如果(isempty()==true)
下一步;
删除p;
尺寸-=1;
返回温度;
}
}
};
类节点
{
公众:
字符数据;
节点*下一步;
节点(chard){data=d;next=NULL;}
节点(char d,node*n){data=d;next=NULL;}
int getdata(){return data;}
node*getnext(){return next;}
void setdata(chard){data=d;}
void setnext(node*n){next=n;}
};

“stack”似乎是类的名称。您需要实例化它。像

stack someStackInstance;
someStackInstance.push('x');
您可能希望在有
堆栈->推送('x')的位置显示完整的代码(您没有使用指针)。

请尝试以下方法:

stack someObj;
someObj.push(whatever_you-want_to_push);
->
运算符用于指针

类堆栈
之前声明
类节点
。我的建议是使用
std::stack
。 代码的改进:

node(char d) { data = d; next = NULL; }
node(char d, node* n) { data = d; next = NULL; }
可以更好地书写为:

node(char d, node* n = NULL) { data = d; next = NULL; }

实际上,我看不到传递的
node*n
参数有任何用处。您没有在当前实现中使用它。

此代码不可编译。它不会重现所描述的问题。A会很有帮助。您在此处显示的代码声明它确实存在。代码中不会出现行
stack->push('x')
。请显示演示特定问题的代码。研究初始化列表:
node(char d,node*n=nullptr):数据(d),下一个(n){;}