#include <iostream>
const int SIZE = 5;
struct tester
{
int array[SIZE];
enum
{
SIZE = 3
};
void size()
{
std::cout << sizeof(array) / sizeof(int);
}
};
int main(int argc, char** argv)
{
tester t;
t.size();
return 0;
}
私たちが知っているように
クラス内の任意の時点で定義された名前は、クラスのすべてのメンバー関数のスコープ内にあります。したがって、enum
SIZE は関数 size のスコープ内にあり、グローバル変数 SIZE を非表示にします。そのため、配列サイズは 5 ではなく 3 と出力されるはずですが、コンパイルすると未定義であることが示されます。なぜここで何が起こっているのですか?