ISO C++禁止声明无类型的'Stack'

ISO C++ forbids declaration of 'Stack' with no type

本文关键字:Stack 类型 C++ 禁止 声明 ISO      更新时间:2023-10-16

下面是一个堆栈结构的头文件。我不明白的是这个错误,它卡住了我:

ISO c++禁止声明没有类型

的'Stack'

代码如下:

#include <stdexcept>
class Element;
class Stack{
    public:
        Stack():first(0){}; //constructor
        ~Stack(); //destructor
        void push(int d);
        int pop()throw(length_error);
        bool empty();
    private:
        Element *first;
        Stack(const& Stack){}; //copy constructor
        Stack& operator = (const& Stack){}; //assignment operator..
};

有人知道这个错误是什么意思吗?

Stack& operator = (const& Stack)应为Stack& operator = (const Stack&)

你不能有一个指向引用的指针或引用数组或任何东西,所以编译器认为&必须结束声明的类型部分,下面的Stack必须是参数名。然而,在const&中没有类型,所以编译器说你不能声明没有类型的参数Stack。在旧版本的C中,有时会在可以出现类型但被省略的上下文中推断类型int,这就是为什么错误讨论ISO c++禁止这样做的原因。