gpt4 book ai didi

c++ - 类声明后编译错误,Main 没有 "see"类

转载 作者:太空宇宙 更新时间:2023-11-04 15:41:25 26 4
gpt4 key购买 nike

我收到一个涉及以下类的错误。

#ifndef STACKLL
#define STACKLL
#include <iostream>
using namespace std;
template <class T>
class STACKLL
{
private: struct NODE
{
T info; NODE *next;
};
NODE *Stack;
public: STACKLL()
{Stack = NULL;}
void Push (T x)
{
NODE *p = new (NODE);
p -> info = x;
p -> next = Stack;
Stack = p;
}
T Pop()
{
NODE *p = Stack;
T x = p -> info;
Stack = p -> next;
delete (p);
return x;
}
bool Empty()
{return (Stack == NULL)?true:false;}
};
#endif

这是在主程序中使用的类。

#include <iostream>
#include "STACKLL.h"
using namespace std;
int main ()
{
STACKLL <int> s;
int a[5] = {3,9,8,5,7}, sum=0, nodecount=0;
for (int i = 0; i < 5; ++i)
s.Push (a[i]);
while (!s.Empty())
{
int c = s.Pop();
cout << c << "->";
sum += c;
nodecount++;
}
cout << "NULL\n";
cout << "Sum of nodes = " << sum << endl;
cout << "There are " << nodecount << " nodes\n";

我遇到的第一个问题是在类声明的末尾:“error C2332: 'class': missing tag name”。我遇到的第二个问题是“STACKLL s;”,这是 main 中唯一的堆栈对象。我的编译器读取到 STACKLL,但“<”带有红色下划线,表示:“错误:需要一个表达式”。我以前遇到过这个错误,但上次错误就消失了。我想把它固定下来,这样我就不会再遇到这个问题了。任何帮助将不胜感激。

最佳答案

您之前定义了一个名为 STACKLL 的空宏,然后您尝试创建一个名为 STACKLL 的类.预处理器删除 STACKLL从你的程序中,所以你得到这个:

class
{
...

这显然是一个语法错误。

第二个问题,也是一样的。预处理器删除 STACKLL , 所以你得到 <int> s; ,这显然也是一个语法错误。

希望这对您有所帮助!

-亚历克斯

关于c++ - 类声明后编译错误,Main 没有 "see"类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22392598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com