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;
}