您必须在类中将鼠标处理程序声明为静态。例如,我有一个dragger
与一名成员mouser
,我想被称为。我宣布成为帮手static void mouser
,转换收到的 void* 并调用成员:
class dragger {
void mouser(int event, int x, int y) {
current_img = original_img.clone();
Point P(x, y);
...
}
static void mouser(int event, int x, int y, int, void* this_) {
static_cast<dragger*>(this_)->mouser(event, x, y);
}
和实例dragger
构造函数是这样的
dragger(string w, Mat m) :
window_id(w), status(0), original_img(m), /*black(0, 0, 0),*/ K(5, 5)
{
...
setMouseCallback(w, mouser, this);
}
...
}