成员函数指针在另一个成员函数中

时间:2015-12-26 16:58:29

标签: c++ member-function-pointers

我的班级 GUI_clickable 存储一个函数指针 m_fOnReleased ,以便在需要时回调:

class GUI_clickable
    : virtual public GUI_focusable
{
    void    (*m_fOnReleased)(); //function pointer

    void setFOnRleased( void (*fOnReleased)() )
    {
        m_fOnReleased = fOnReleased;
    };

    virtual void onMouseButtonReleased();
    {
        (*m_fOnReleased)(); //call the pointed function
    }
};

另一个类使用 GUI_clickable 并设置它,以便回调其中一个成员函数:

class GUI_dlg_test
    : public GUI_dlg
{
    GUI_clickable     m_eButton;

    void onButton(){ fprintf(stderr,"Hello onReleased !\n"); };

    GUI_dlg_test();
};

GUI_dlg_test::GUI_dlg_test()
    : GUI_dlg()
{
    m_eButton.setFOnRleased( &this->onText );
}

我知道此代码仅在 onButton 设置为静态时才有效。但在这种情况下,我无法访问 onButton()

中的实例成员

另一种解决方案是将 m_fOnReleased 的类型设置为 GUI_dlg_test 的成员函数

void (GUI_dlg_test::*m_fOnPressed)(); //function pointer

但我不确定 m_fOnReleased 将始终来自 GUI_dlg_test 还是来自其他 GUI_dlg 孩子

有没有办法将 m_fOnReleased 的类型设置为指向非静态函数的指针,而不知道它将来自哪个类?

感谢您的帮助

0 个答案:

没有答案