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

时间:2010-04-22 03:00:14

标签: c++ stack header-files

我已经设置了以下头文件来创建一个使用Array的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

2 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:9)

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

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

ArrayStack Stack;

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