c++使用this的一个实例

转载:原文地址

正在做一个鼠标绘图程序,在一个class中需要调用鼠标响应函数setMouseCallback,

由于setMouseCallback中的mousecallback不支持调用non-static function,遇到了很多问题,现总结解决方法。

myclass.h中

class MyClass
{
private:
    void on_Mouse(int event, int x, int y);
    static void onMouse(int event, int x, int y, int, void* userdata);
}

myclass.cpp中

void MyClass::onMouse(int event, int x, int y, int, void* userdata)
{
    // Check for null pointer in userdata and handle the error
    MyClass* temp = reinterpret_cast<MyClass*>(userdata);
    temp->on_Mouse(event, x, y);
}
 
void MyClass::on_Mouse(int event, int x, int y)
{
    switch (event)
    {
    case CV_EVENT_LBUTTONDOWN:  
        //your code here
        break;
    case CV_EVENT_MOUSEMOVE:
        //your code here
        break;
    case CV_EVENT_LBUTTONUP:
        //your code here
        break;
    }
}

在cpp函数中调用setMouseCallback时采用:

void MyClass::Initial()
{
    //......
    setMouseCallback(windowname, MyClass::onMouse, this);
}

setMouseCallback中的this很重要,不然MyClass* temp不能得到当前的MyClass实例。

posted on 2022-12-20 16:09  543680484  阅读(9)  评论(0编辑  收藏  举报