函数返回int
的引用int& MyClass::getElement(int position)
{
if (position < _size)
return (_array[position]);
return ([...]) // An Error
}
我的第一个想法是返回NULL。 但显然引用不能为NULL。
在这种情况下返回错误的正确方法是什么?
答案 0 :(得分:6)
各种选项,大致按照我首选的选项排序:
std::out_of_range
std::pair<bool,int&>
或boost::optional<int&>
。如果你想按值而不是引用返回一些内容,这会更有用,所以不能返回一个指针。答案 1 :(得分:2)
正确的方法是抛出std::out_of_range
类型的异常,以防参数位置没有可接受的值。
答案 2 :(得分:0)
如果需要返回引用,则必须在发生错误时抛出异常。
答案 3 :(得分:0)
要考虑的另一件事是,即使你返回一个'int'(即不是引用),NULL也将为0(并且很容易与有效的int值'0'混淆。)< / p>
如果你想坚持这个函数定义,那么抛出异常来发出错误信号。
int& MyClass::getElement(int position)
{
if (position < _size)
return (_array[position]);
throw std::out_of_range("Invalid size to getElement");
}