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