C++ 结构和“错误:ISO C++ 禁止声明没有类型的‘...’”

cod*_*ass 1 c++ struct

我正在尝试用 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)的回答建议添加命名空间,但我发现很难看出它在这里不起作用的原因是什么。

总之,我有以下问题:

  1. 在这种情况下,此错误实际上意味着什么?
  2. 这个错误通常意味着什么?
  3. 为什么这段代码不起作用?
  4. 如何使它工作?

如果有人能给出答案和/或研究/阅读的方向,我将不胜感激。

The*_*ark 5

这段代码

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因为此时它期待的是声明,而不是代码。

这个错误通常意味着什么?这通常意味着编译器不知道如何处理您编写的声明。

为什么这段代码不起作用?因为你把可执行代码放在声明应该去的地方。

如何使它工作?请参阅上面的代码。