我有一个堆栈结构的头文件。我不明白的是这个错误让我感到困扰:
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..
};
有没有人知道这个错误意味着什么?
答案 0 :(得分:9)
Stack& operator = (const& Stack)
应为Stack& operator = (const Stack&)
。
您不能拥有指向引用或引用数组的指针或任何内容,因此编译器认为&
必须结束声明的类型部分,并且以下Stack
必须是参数名称。但是const&
中没有类型,因此编译器表示您不能声明参数Stack
没有类型。在C的旧版本中,类型int
有时在类型可能出现的情况下被推断但被省略,这就是为什么错误会讨论ISO C ++禁止这种情况。