我已经设置了以下头文件来创建一个使用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
答案 0 :(得分:11)
构造函数和析构函数具有类的名称,即ArrayStack
,而不是Stacker
。
答案 1 :(得分:9)
error: ISO C++ forbids declaration of "identifier" with no type.
错误表示声明的标识符或标识符的类型本身是尚未找到声明的类型。
例如,如果您在代码中编写了以下内容:
ArrayStack Stack;
如果您未能包含定义“ArrayStack”的标头,则上面的行会给您带来这样的错误。如果您不小心使用Stack
而不是ArrayStack
(例如,在声明变量或将其用作函数的返回类型时等)时,您也会收到此类错误。我还应该指出,你的标题有一个相当明显的错误,你可能想要纠正;类的构造函数和析构函数必须与类的名称匹配。编译器会变得困惑,因为当它看到“Stacker”时,它会把它解释为一个名为“Stacker”的函数,你只是忘了给它一个返回类型(它不会意识到你实际意味着因为它是构造函数,并且简单地误导了它。)