在opencv中创建按钮时出错 'void(Window ::)(int,void *)'类型的参数与'cv :: ButtonCallback {aka void()(int,void )}'
不匹配
class Window{
void ChecKBox(int state, void* val){
// do nothing for now
return;
}
public:
void createCheckbox(){
cv::createButton(checkboxname, CheckBox, NULL, CV_CHECKBOX, 0);
}
};
int main(){
Window w;
w.createCheckBox();
}
我似乎无法找到解决此问题的方法。
答案 0 :(得分:1)
哦,你不能在这里传递一个类的成员函数。想一想,'this'指针来自哪里? (就像你调用类成员一样w.CheckBox(1,NULL);这里没有'w'。)
highgui接口有点受限。它只能调用自由函数或静态成员。
所以,如果您的回调函数不需要Window中的任何内容,请将其设为静态:
class Window {
static void CheckBox(int state, void* val) { /*you can't use 'this' here!*/ return; }
public:
void createCheckBox() { cv::createButton(checkboxname, CheckBox, NULL, CV_CHECKBOX, 0); }
};
int main() {
Window w;
w.createCheckBox();
}