“.”之前的预期主表达式令牌

expected primary-expression before '.' token

我收到错误: expected primary-expression before '.' token 在以下程序中:

#include <iostream>

int main() {
    struct a {
        int y;
    };

    int n = 0;
    n = a.y;

    std::cout << "n: " << n << "\n";

    return 0;
}

我在 vim 中使用 gcc g++ 编译器和 Syntastic。这应该行不通吗?

a 类型 不是对象

您需要先创建 a 的实例,然后才能使用它的任何成员:

a b = { 1 };

int n = 0;
n = b.y;

std::cout << "n: " << n << "\n";