如果我有一个带有一些返回值的函数。而且我想根据参数抛出一个异常,是否可以不写返回值?
例如:
State &States::getState(StateType stateType)
{
for(auto &pair : states)
if(pair.first == stateType)
return *pair.second;
THROW("Cannot find the requested State."); //MACRO TO THROW AND PRINT
}
我总是收到警告:“控制可能会达到无效功能的结束”。 如何仅在更改我的c ++代码时删除该警告?
答案 0 :(得分:-1)
是否可以不写回传值?
出于可读性目的,最好在函数原型声明时指定返回。史蒂夫麦康奈尔写道"当从底部读取它时,你很难理解一个例程,你不知道它返回到某个地方的可能性。" (代码完成,393)
如何仅在更改我的c ++代码时删除该警告?
如何提供参考参数" return"作为一种解决方法?但是,您需要检查State类是否必须重载operator =。
void States::getState(const StateType stateType, State& toGet)
{
for(auto &pair : states)
if(pair.first == stateType)
toGet = pair.second;
THROW("Cannot find the requested State."); //MACRO TO THROW AND PRINT
}