wbr*_*wbr 5 c++ eclipse null return
这是我的代码:
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];
}
}
Run Code Online (Sandbox Code Playgroud)
我们的想法是遍历一个Composer对象数组,并返回对last_name字段与"in_last_name"匹配的对象的引用.我理解警告告诉我的是,该函数可能不会返回任何内容(例如,如果用户提供了无效的姓氏).我的问题是,我该如何避免这种情况?我尝试在for循环后添加"return 0"和"return NULL",它不会编译.如果找不到任何内容,此方法是否应抛出异常?
声明您的函数返回a Composer&
,即对a的引用Composer
.如果您的函数未能返回合适的引用,并且调用者尝试使用返回值,则会导致未定义的行为.
如果您的函数可能合法地无法找到它正在查找的内容,您可能希望将返回类型更改为指针而不是引用.这会让你选择返回NULL
:
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];
}
return NULL;
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以在函数无法找到目标时抛出异常.
归档时间: |
|
查看次数: |
975 次 |
最近记录: |