C++ 如何在C++;?

C++ 如何在C++;?,c++,function,struct,C++,Function,Struct,我的结构代码: struct MouseHandler { void OnHover(); void* OnLeftClick(); // void (*OnLeftClick)(); void OnRightClick(); void OnDrag(); void OnDrop(); }; 调用结构: MouseHandler ms; 我正在尝试将示例CrollDownClickHandler传递给OnRightClick()女士,是否可能,

我的结构代码:

struct MouseHandler
{
    void OnHover();
    void* OnLeftClick();
    // void (*OnLeftClick)();
    void OnRightClick();
    void OnDrag();
    void OnDrop();
};
调用结构:

MouseHandler ms;
我正在尝试将示例CrollDownClickHandler传递给OnRightClick()女士,是否可能,我该如何做,我尝试了此操作,但失败了:

ms.OnRightClick()=SampleScrollDownClickHandler()


我没有使用std库未正确定义
结构的成员变量

void OnHover()声明成员函数,而不是成员变量。您需要使用
void(*onHover)(),可以指向非成员函数

struct MouseHandler
{
    void (*OnHover)();
    void (*OnLeftClick)();
    void (*OnRightClick)();
    void (*OnDrag)();
    void (*OnDrop)();
};
通过该更改,您可以使用:

MouseHandler me;
me.OnRightClick = SampleScrollDownClickHandler;

只要声明了
SampleScrollDownClickHandler
,并且它是正确的函数类型。

那么注释掉的行实际上更接近您想要的解决方案。为了传递函数指针,您不需要调用函数本身,这是通过使用尾部的
()
调用函数来实现的。因此,以下代码更接近您想要的内容(仅限于代码的最基本部分):


OnRightClick()
似乎返回
void
,因此,不,您不能像那样为其分配处理程序。请显示一个。您似乎想要指向函数的指针,但并没有注释
OnLeftClick
void(*OnRightClick)(=nullptr
ms.OnRightClick=&SampleScrollDownClickHandler谢谢所有的答案,效果很好,我无法投票
struct MouseHandler {
    void (*OnLeftClick)();
    void OnRightClick();
    void OnDrag();
    void OnDrop();
};

void my_callback() {
}

int main() {
    MouseHandler m;

    m.OnLeftClick = my_callback;
}