VS +qt C++ 编写case语句出现初始化操作由”case“标签跳过问题
最近在编写代码时用到switch语句时出现“line1”的初始化操作由“case”标签跳过问题。
switch (type)
{
case 1:
xRegLine* line1 = static_cast<xRegLine*>(entities[i]);
qDebug() << line1->getData().startpoint.x;
qDebug() << line1->getData().startpoint.y;
qDebug() << line1->getData().endpoint.x;
qDebug() << line1->getData().endpoint.y;
qDebug() << line1->getData().regHeight;
break; /**< Line */
case 2:
xCircle* cirle = static_cast<xCircle*>(entities[i]);
qDebug() << cirle->getData().radius;
qDebug() << cirle->getData().center.x;
qDebug() << cirle->getData().center.y;
break;
}

上述的代码就会出现图片中的错误,这是因为初始化的时候没有用大括号包含起来,就会报该错误,解决办法为:
switch (type)
{
case 1:
{
xRegLine* line1 = static_cast<xRegLine*>(entities[i]);
qDebug() << line1->getData().startpoint.x;
qDebug() << line1->getData().startpoint.y;
qDebug() << line1->getData().endpoint.x;
qDebug() << line1->getData().endpoint.y;
qDebug() << line1->getData().regHeight;
}
break; /**< Line */
case 2:
{
xCircle* cirle = static_cast<xCircle*>(entities[i]);
qDebug() << cirle->getData().radius;
qDebug() << cirle->getData().center.x;
qDebug() << cirle->getData().center.y;
}
break;
}
只需要将初始化代码用大括号包含起来问题就迎刃而解了。
在使用VS+qt C++编写代码时遇到switch语句中case标签跳过初始化操作的问题,错误源于未使用大括号包围初始化代码。通过将初始化部分用大括号括起来即可修复此问题。
885

被折叠的 条评论
为什么被折叠?



