在switch语句中不可以有定义部分,如果有定义,要初始化的时候,必须把定义部分需要用{}括起来。
eg:
switch(c)
{
case '+':
{
Context *context=new Context(newAddOperation(a,b));
cout << context->GetResult()<<endl;
break;
}
default:
break;
}
当如果没有第一个case中的{}时,会报如下错误:
1>d:\c_c++-workstation\designmodel\strategy\main.cpp(21): error C2361: “default”标签跳过“context”的初始化操作
1> d:\c_c++-workstation\designmodel\strategy\main.cpp(17) : 参见“context”的声明
或者也可以写成如下:
Context *context;
switch(c)
{
case '+':
context = new Context(newAddOperation(a,b));
cout << context->GetResult()<<endl;
break;
default:
break;
}
也是可以通过的。