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

JDr*_*159 4 c++ stack header-files

我已经设置了以下头文件来创建一个使用数组的Stack.我在第7行得到以下内容:

错误:ISO C++禁止声明没有类型的"堆栈".

我认为类型是输入值.感谢您的帮助.谢谢.

#ifndef ARRAYSTACKER_H_INCLUDED
#define ARRAYSTACKER_H_INCLUDED
// ArrayStacker.h: header file
class ArrayStack {
    int MaxSize;
    int EmptyStack;
    int top;
    int* items;
public:
    Stacker(int sizeIn);
    ~Stacker();
    void push(int intIn);
    int pop();
    int peekIn();
    int empty();
    int full();
};
#endif // ARRAYSTACKER_H_INCLUDED
Run Code Online (Sandbox Code Playgroud)

GMa*_*ckG 11

构造函数和析构函数具有类的名称,而ArrayStack不是Stacker.


Mic*_*yan 9

该错误表示声明的标识符类型或标识符本身是尚未找到声明的类型.error: ISO C++ forbids declaration of "identifier" with no type.

例如,如果您在代码中编写了以下内容:

ArrayStack Stack;

如果您未能包含定义"ArrayStack"的标头,则上面的行会给您带来这样的错误.你也将得到这样的错误,如果你不小心使用Stack,而不是ArrayStack(如声明变量时或将其当作为函数的返回类型,等等).我还应该指出,你的标题有一个相当明显的错误,你可能想要纠正; 类的构造函数和析构函数必须与类的名称匹配.编译器会变得困惑,因为当它看到"Stacker"时,它会把它解释为一个名为"Stacker"的函数,你只是忘了给它一个返回类型(它不会意识到你实际意味着因为它是构造函数,并且简单地误导了它).