#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。
所以我的数组大小应该打印3而不是5,但是当我编译它时显示它是未定义的。为什么会发生什么?
答案 0 :(得分:1)
对我来说它打印5,除非你在数组定义之前放置枚举。那就是3。
就像预期的那样(VS2012)。
答案 1 :(得分:0)
设置阵列后,您正在重置SIZE。如果您希望数组为3,则应将枚举放在数组之前。
答案 2 :(得分:0)
您正在重新定义SIZE,因此您的编译器会在您的一条评论中为您提供“更改含义”错误。