我想写一个这样的函数调用:
my_object.myFunction(num_a, num_b, FIRST_OPTION);
,其中函数定义如下:
MyClass::myFunction(int num_a, int num_b, int option)
{
if (option == FIRST_OPTION) //do this
else if (option == SECOND_OPTION) //do that
// etc.
}
类似于调用OpenCV函数,例如cvtColor(img, img, CV_BGR2Luv)
,其中img
是一个变量,CV_BGR2Luv
是我称之为人类可读的选项选择器。
我尝试了一些预处理器定义(#define FIRST_OPTION 1;
),但它没有工作。
OpenCV使用enum,并将值作为int
传递。
你可以这样做:
#include <opencv2opencv.hpp>
using namespace cv;
enum
{
OPTION_A,
OPTION_B,
OPTION_C
};
void foo(const Mat& src, Mat& dst, int option)
{
switch (option)
{
case OPTION_A:
{
// do something
int gfd = 0;
break;
}
case OPTION_B:
{
// do something
break;
}
case OPTION_C:
{
// do something
break;
}
default:
{
// ERROR
// unsupported operation
}
}
}
int main()
{
Mat3b src(100,100,Vec3b(0,255,0)); // A green image
Mat3b dst;
// Custom operation
foo(src, dst, OPTION_A);
return 0;
}