ISO C ++禁止声明'Stack'没有类型

时间:2011-11-25 23:53:50

标签: c++ syntax

我有一个堆栈结构的头文件。我不明白的是这个错误让我感到困扰:

  

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..
};

有没有人知道这个错误意味着什么?

1 个答案:

答案 0 :(得分:9)

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

您不能拥有指向引用或引用数组的指针或任何内容,因此编译器认为&必须结束声明的类型部分,并且以下Stack必须是参数名称。但是const&中没有类型,因此编译器表示您不能声明参数Stack没有类型。在C的旧版本中,类型int有时在类型可能出现的情况下被推断但被省略,这就是为什么错误会讨论ISO C ++禁止这种情况。