错误警告: instancebase.cpp(607):警告C4715:'CInstanceBase :: GetPrestigeGrade':并非所有控制路径都返回值
代码:
#ifdef ENABLE_TITLE_SYSTEM
int CInstanceBase::GetPrestige()
{
return m_sPrestige;
}
UINT CInstanceBase::GetPrestigeGrade()
{
int pTitle_vegas[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
if (m_sPrestige == pTitle_vegas[1])
return 0;
else if (m_sPrestige == pTitle_vegas[2])
return 1;
else if (m_sPrestige == pTitle_vegas[3])
return 2;
else if (m_sPrestige == pTitle_vegas[4])
return 3;
else if (m_sPrestige == pTitle_vegas[5])
return 4;
else if (m_sPrestige == pTitle_vegas[6])
return 5;
else if (m_sPrestige == pTitle_vegas[7])
return 6;
else if (m_sPrestige == pTitle_vegas[8])
return 7;
else if (m_sPrestige == pTitle_vegas[9])
return 8;
else if (m_sPrestige == pTitle_vegas[10])
return 9;
else if (m_sPrestige == pTitle_vegas[11])
return 10;
else if (m_sPrestige == pTitle_vegas[12])
return 11;
else if (m_sPrestige == pTitle_vegas[13])
return 12;
else if (m_sPrestige == pTitle_vegas[14])
return 13;
else if (m_sPrestige == pTitle_vegas[15])
return 14;
else if (m_sPrestige == pTitle_vegas[16])
return 15;
else if (m_sPrestige == pTitle_vegas[17])
return 16;
else if (m_sPrestige == pTitle_vegas[18])
return 17;
else if (m_sPrestige == pTitle_vegas[19])
return 18;
else if (m_sPrestige == pTitle_vegas[0])
return 19;
}
#endif
它是一个二进制源。 我该如何重写代码以禁用此警告? 我是初学者
答案 0 :(得分:2)
最后一个条件为return
时,函数结尾没有false
语句。因此,最后一部分可以更改为
else if (m_sPrestige == pTitle_vegas[0])
return 19;
对此
return 19;
实际上,所有else
都只会使代码混乱,因为每个return X;
之前都可以将它们删除。
但是该功能可以从根本上简化为
UINT CInstanceBase::GetPrestigeGrade()
{
if(m_sPrestige == 0) {
return 19;
}
return m_sPrestige - 1;
}