带有人类可读选项选择器的c++类函数



我想写一个这样的函数调用:

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;
}

最新更新