在c++中,没有指明与结构体实例化有关的类型错误



我这里有一些代码:

#include <vector>
#include <cstdio>

class Syntax {
public:
Syntax();
~Syntax();

bool parseNext(int tokenID);
private:
struct Node {
int token;
std::vector<Node>* next;
} none, wS1, lParen1, wS2, sub1, add1, div1, mul1, wS3, intLit, wS4, rParen1, endL;
enum Tokens {
WHITESPACE,
ADD_OPERATOR,
SUB_OPERATOR,
MUL_OPERATOR,
DIV_OPERATOR,
L_PAREN,
R_PAREN,
INT_LITERAL,
NONE
};
none.token = NONE;
};

这给了我错误:

parser.hpp:32:5: error: ‘none’ does not name a type
32 |     none.token = NONE;
|     ^~~~
In file included from parser.cpp:1:
parser.hpp:32:5: error: ‘none’ does not name a type
32 |     none.token = NONE;
|     ^~~~

我不知道为什么。我检查了网上的例子,它似乎完美匹配。事实上,我从一个在线示例中复制了一个结构体,并收到了相同的错误。谁能帮帮我。

您试图在类的主体中执行代码,这在c++中是不合法的。您需要将none.token = NONE;放在构造函数中。

最新更新