2

この問題を見つけるのにかなりの時間がかかりました。次のコード

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>エラー C2327: 'Test::_member': 型名、静的、または列挙子ではありません
1>エラー C2065: '_member': 宣言されていない識別子

int s = 0;そして、に置き換えるとすぐにエラーが消えますint s;

これは MSVC 2013 でのみ発生し、2015 では発生しません。コンパイラのバグであると確信していますが、私がよく知らない C++ の特殊性 (C++11 と C++ の間で変更されたもの) ではないことを確認したいと思います。 14)。

4

1 に答える 1