我花了一个小时才找到这个问题。以下代码
class Test {
public:
void method();
int _member;
};
void Test::method()
{
struct S {
int s = 0; // same with int s {0};
};
_member;
}
int main(int argc, const char* argv [])
{
return 0;
}
产生编译错误:
1>error C2327: 'Test::_member' : 不是类型名称、静态或枚举
器 1>error C2065: '_member' : 未声明的标识符
一旦我替换为 ,错误就会int s = 0;
消失int s;
。
这只发生在 MSVC 2013 中,而不是 2015 年。我很确定这是一个编译器错误,但我想确保它不是我不熟悉的 C++ 特性(在 C++11 和 C++ 之间发生了变化14)。