我正在尝试用 C++ 编写类和结构,例如:
using namespace std;
struct Position {
int x;
int y;
};
class Maze {
Position pos;
pos.x = 0;
pos.y = 0;
};
int main() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试编译它时会出现一些错误:
(gcc 版本 4.3.2)
10: error: ISO C++ forbids declaration of 'pos' with no type
10: error: expected ';' before '.' token
11: error: ISO C++ forbids declaration of 'pos' with no type
11: error: expected ';' before '.' token
Run Code Online (Sandbox Code Playgroud)
看起来这段代码与C++ Tutorial: Struct 中的代码几乎相同。
对其他一些关于“错误:ISO C++ 禁止声明 '...' 没有类型”(例如this)的回答建议添加命名空间,但我发现很难看出它在这里不起作用的原因是什么。
总之,我有以下问题:
如果有人能给出答案和/或研究/阅读的方向,我将不胜感激。
这段代码
pos.x = 0;
pos.y = 0;
Run Code Online (Sandbox Code Playgroud)
需要进入一个函数。一种方法是将它放在构造函数中,例如:
class Maze {
Position pos;
public:
Maze() {
pos.x = 0;
pos.y = 0;
}
};
Run Code Online (Sandbox Code Playgroud)
请注意,我将构造函数设为公开,否则您将无法使用 Maze 类
编辑:实际回答您的问题:
在这种情况下,此错误实际上意味着什么?编译器不知道如何处理,pos.x = 0因为此时它期待的是声明,而不是代码。
这个错误通常意味着什么?这通常意味着编译器不知道如何处理您编写的声明。
为什么这段代码不起作用?因为你把可执行代码放在声明应该去的地方。
如何使它工作?请参阅上面的代码。