在阅读某项目源码的时候,突然发现项目中函数的返回类型竟然是枚举类型!!!这是什么鬼,表示一脸懵逼!!!!
长知识,表示枚举真是个好东西。
项目中涉及到软件初始化状态、图像是否存在、检测是否成功等事项,如果按照传统方法,则需要定义很多变量,但这些状态不是同时存在的,这也就是为什么这个地方可以使用枚举类型的原因。
例:
// 表示返回状态
typedef enum
{
RC_NO_INIT = -6, // no initialize
RC_CHL_NO = -5, // channel no
RC_IMG_NO = -4, // image no
RC_NO_IMG = -3, // image null
RC_RGN_NO = -2, // region no
RC_NO_RGN = -1, // region null
RC_PASS = 0, // pass
RC_FAIL = 1, // fail
RC_OBJ = 2, // no object
RC_SIZE = 3, // size
RC_SURF = 4, // surface
RC_ROUGH = 5, // edge rough
RC_WHT_DOT = 6, // white dot
} RETURN_CODE;
RETURN_CODE ImageExist(HObject srcImage)
{
if (srcImage.empty())
{
return RC_IMG_NO;
}
else
{
return RC_PASS;
}
这样就可以很容易查找到当前程序所处的状态,也非常容易定位出程序出错的地方。
昨晚重新翻阅《C++Primer Plus》时,看到C++的返回类型是这样限制的:
C++对于返回类型有一定的限制:不能是数组,但可以是其他任何类型——整数、浮点数、指针,甚至是结构和对象!(虽然C++函数不能直接返回数组,但可以将数组作为结构或对象组成部分来返回)。