1 c++ variables initialization object
我试图声明一个这样的变量:
switch(foo){
case 1:
MyClass myObject();
break;
case 2:
MyClass2 myObject();
break;
case 3:
MyClass3 myObject();
break;
}
Run Code Online (Sandbox Code Playgroud)
但在编译时,编译器会返回以下错误:
有什么想法解决这个问题?
switch声明的主体是单个范围.如果要将变量声明为单个变量,case则必须在case使用花括号中创建块:
switch (foo) {
case 1: {
MyClass myObject();
break;
}
case 2: {
MyClass2 myObject();
break;
}
case 3: {
MyClass3 myObject();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您经常发现这样做,您可以考虑为每个代码创建函数,case以获得更易于理解和维护的代码:
switch (foo) {
case 1:
HandleCase1();
break;
case 2:
HandleCase2();
break;
case 3:
HandleCase3();
break;
}
Run Code Online (Sandbox Code Playgroud)