返回引用时返回错误

nsv*_*vir 3 c++ error-handling reference

函数返回int的引用

int&     MyClass::getElement(int position)
{
   if (position < _size)
      return (_array[position]);
   return ([...]) // An Error
}
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是返回NULL.但显然引用不能为NULL.

在这种情况下返回错误的正确方法是什么?

Mik*_*our 6

各种选项,大致与我首选的选项一起订购:

  • 通常会抛出异常 std::out_of_range
  • 返回一个指针
  • 返回一些其他类型的定义无效的值,如std::pair<bool,int&>boost::optional<int&>.如果你想按值而不是引用返回一些东西,那么这会更有用,所以不能返回一个指针.
  • 如果您可以选择永远不会是有效数据的数字,则返回对静态幻数的引用.这是令人讨厌的,因为没有什么可以阻止调用者修改它.