有问题,大家帮忙看看
class A
{
int i;
public:
A();
~A();
}
int main()
{
int i;
cin> > i;
switch(i)
{
case 1: A a1; break;
case 2: A a2; break;
}
return 0;
}
Thinking in C++ 上的例子,问题是编译会出错,因为case 1:有可能跳过
define a1; 为什么去掉case 2就可以编译了?不是一样可以跳过define a1?
[解决办法]
case 1: A a1; break;
case 2: A a2; break;
改成
case 1: {A a1;} break;
case 2: {A a2;} break;
[解决办法]
因为去掉case 2后,在switch中只有一个case,不可能跳过过a1定义而使用a1(注意a1的作用域是statement scope,只在switch语句内有效)。