返回参考时返回错误
Return error when returning a reference
一个函数返回int
上的参考int& MyClass::getElement(int position)
{
if (position < _size)
return (_array[position]);
return ([...]) // An Error
}
我的第一个想法是返回null。但是显然参考不能为null。
在这种情况下,返回错误的正确方法是什么?
各种选项,首先用我的首选选项订购:
- 引发一个例外,常规
std::out_of_range
- 返回指针
- 返回一些其他类型,具有定义良好的无效值,例如
std::pair<bool,int&>
或boost::optional<int&>
。如果您想通过值返回某些内容,而不是参考,这将更有用,因此无法返回指针。 - 如果您可以选择一个永远不会有效数据的数字,请返回对静态魔术号码的引用。这很讨厌,因为没有什么可以阻止呼叫者修改它。
正确的方法是在参数位置没有可接受的值的情况下抛出类型std::out_of_range
的例外。
如果您需要返回参考,则必须在错误的情况下提出异常。
要考虑的另一件事是,即使您要返回'int'(即不是参考),null也将为0(并且很容易与有效的int值混淆那是'0')。
如果要坚持此功能定义,请引发异常以发出错误。
int& MyClass::getElement(int position)
{
if (position < _size)
return (_array[position]);
throw std::out_of_range("Invalid size to getElement");
}
相关文章:
- (C++)分析树以计算返回错误值的简单算术表达式
- glad 导致 glfwSwapBuffers 返回错误消息
- 我的模板类方法返回错误类型?
- 共享内存:MapViewOfFile 返回错误 5
- 使用 std::forward_list 返回错误的队列实现
- FFMPEG:sws_scale返回错误:切片参数 0, 2160 无效
- __int64 CString 返回错误的值 - C++ MFC
- C++ OpenGL 中,绘制形状返回错误
- Python os.system() 返回错误值
- 函数从指针 c++ 中获取错误的值并返回错误的答案
- LibClang clang_getArgType() 返回错误的类型
- 除法函数返回错误的值
- 当命令失败时,gzip 会在 C++ 中返回错误代码吗?
- 矩阵逆变器返回错误的反转
- openCL-创建子缓冲区返回错误代码13
- Qt SQL LIKE语句返回错误
- GetLastError()从FtpPutFile()返回错误6
- PfCreateInterface返回错误120(未实现)
- 为什么 Pa_GetStreamTime() 返回错误?
- G++ 在尝试使用 G++ 使用 openCV 进行编译后返回错误