在switch语句中通过引用返回

shi*_*zou 0 c++ syntax reference switch-statement c++11

我想通过引用返回到交换机内部的变量来返回,例如:

sometype & getbar();

void foo() {
        switch ( {statement} ) {
        case {statement}:
            sometype & handle = getbar();
        ...
Run Code Online (Sandbox Code Playgroud)

但我收到编译器错误:

'case'标签跳过'identifier'的初始化

'default'标签跳过'identifier'的初始化

它似乎不可能这样做:

void foo() {
        sometype & handle;
        switch ( {statement} ) {
        case {statement}:
            handle = getbar();
        ...
Run Code Online (Sandbox Code Playgroud)

因为引用变量需要初始化.

有没有办法保持switch语句?

owa*_*der 5

就在这里.将case语句的主体括在括号中,如下所示:

case {statement}:
{
    sometype & handle = getbar();
    ...
}
Run Code Online (Sandbox Code Playgroud)