如果和 else 部分都在执行

Both if and else part are executing

本文关键字:执行 else 如果      更新时间:2023-10-16
  /*Q_INVOKABLE*/ void LinkDestUI::selectDeselectSingleDestination(int iXmlId)
{
   for(const auto &subNode : m_nodeColl)
   {
      if(bMultipleSelect())
      {
         if(subNode->getXmlId() == iXmlId)
         {
             LOG(Severity_Error)<<"1 ";
            subNode->setbSelected(!subNode->bSelected());
         }
      }
      else
      {
         if(subNode->getXmlId() == iXmlId)
         {
             LOG(Severity_Error)<<"2 ";
            subNode->setbSelected(!subNode->bSelected());
         }
         else
         {
             LOG(Severity_Error)<<"3 ";
            subNode->setbSelected(false);
         }
      }
   }
}

当我执行我的代码时,编译器会转到 else 部分并在 else 部分中同时包含 if 和 else 语句。 为什么?

这似乎...(暂时增加我的机智属性以避免冒犯(...不太可能:-(

这可能是因为代码被输入了不止一次,而你只是假设它因为输出而执行了这两个部分。

我的建议是将外部else中的代码更改为:

LOG(Severity_Error)<<"Starting inner if ";
if(subNode->getXmlId() == iXmlId)
{
    LOG(Severity_Error)<<"2 ";
    subNode->setbSelected(!subNode->bSelected());
}
else
{
    LOG(Severity_Error)<<"3 ";
    subNode->setbSelected(false);
}
LOG(Severity_Error)<<"Ending inner if ";

不应该看到两个块在没有干预结束/启动消息集的情况下执行。