这里是我的代码:“控制到达非void函数结束”在Eclipse C警告++,但没有编译期或运行时错误
Composer& Database::GetComposer (string in_last_name)
{
for (int i = 0; i < next_slot_; i++)
{
if (composers_[i].last_name() == in_last_name)
return composers_[i];
}
}
的想法是遍历作曲对象和返回数组对last_name字段与“in_last_name”匹配的对象的引用。我了解警告告诉我什么,即该函数可能不会返回任何内容(例如,如果用户提供了无效的姓氏)。我的问题是,我怎样才能避免这种情况?我尝试在for循环后面添加“return 0”和“return NULL”,它不会编译。如果此方法发现任何内容,应该抛出异常吗?
你应该抛出异常。 –
警告是您的代码中真正的逻辑错误。修正所有警告(并且将警告级别调高至(合理的)可能) –
即使try/catch块抛出标准异常,我仍然会收到同样的警告。 – wbr