Pou*_*sen 10 c++ function-pointers
我有:
typedef void (*RespExtractor) (const cv::Mat & image, cv::Mat & resp);
virtual void predict_image(const cv::Mat & src,
cv::Mat & img_detect,cv::Size patch_size,
RespExtractor );
void create_hough_features(const cv::Mat & image, cv::Mat & resp, FeatureParams & params = FeatureParams() );
Run Code Online (Sandbox Code Playgroud)
我如何定义RespExtractor接受具有默认参数的函数,例如我可以调用:
predict_image(im_in,im_out,create_hough_features);
Run Code Online (Sandbox Code Playgroud)
我试过跟随,没有成功:
typedef void (*RespExtractor) (const cv::Mat & image, cv::Mat & resp,FeatureParams params, FeatureParams());
Run Code Online (Sandbox Code Playgroud)
pmd*_*mdj 12
函数指针本身不能具有默认值.您必须通过函数指针在具有默认参数的函数中包装调用(这甚至可以是包装函数指针并具有operator()默认参数的小类),或者具有不同的函数指针你的功能超载.
默认参数不是函数签名的一部分,因此您不能直接执行此操作。
但是,您可以为 定义一个包装函数create_hough_features,或者只是一个只接受两个参数的第二个重载:
void create_hough_features(const cv::Mat & image, cv::Mat & resp, FeatureParams & params) {
// blah
}
void create_hough_features(const cv::Mat & image, cv::Mat & resp) {
create_hough_features(image, resp, DefaultParams());
}
Run Code Online (Sandbox Code Playgroud)