【问题标题】:ISO C++ forbids declaration of 'Stack" with no typeISO C++ 禁止声明没有类型的“堆栈”
【发布时间】:2011-02-10 21:24:00
【问题描述】:

我已经设置了以下头文件来创建一个使用数组的堆栈。我在第 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

【问题讨论】:

    标签: c++ stack header-files


    【解决方案1】:

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

    【讨论】:

    • 是的,修复构造函数名称,看看你是否仍然得到错误...如果你仍然得到错误,然后发布你的构造函数实现。
    【解决方案2】:

    error: ISO C++ forbids declaration of "<i>identifier</i>" with no type. 错误表明 identifieridentifier 的声明类型本身是尚未找到声明的类型。

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

    ArrayStack 堆栈;

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

    【讨论】:

    • 是的。谢谢你。我对不使用文件名作为类名的约定感到困惑,这与 Java 不同。但是这个类被文件名搞砸了。哎呀!很好的答案。
    • @JKid,欢迎您。另外,请通过点赞来表达您的感激之情。
    • 好的。赞成?必须弄清楚然后去做。谢谢你告诉我。
    猜你喜欢
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多