如何指定类方法的指针? (代表?) [英] How to assign pointer to class method? (delegates?)
问题描述
在类Button中:public Widget我有:void(Window :: * OnClick)()= NULL;
In class Button : public Widget I have: void (Window::*OnClick)() = NULL;
在类Window中是on_click_base():
In class Window is on_click_base():
class Window : public Widget
{
public:
Window(Widget* parent);
virtual ~Window();
void show();
void on_click_base() {}
};
但我更喜欢
but I prefer
class MyWindow : public Window
{
public:
MyWindow() : Window(nullptr) {}
void on_click() {
Dialogs::message_box(L"here click");
}
};
是错误:
button2.OnClick = window.on_click_base; //非标准语法;使用'&'创建指向成员的指针
button2.OnClick = window.on_click_base; //non-standard syntax; use '&' to create a pointer to member
button2.OnClick =& window.on_click_base; //对绑定成员函数表达式的非法操作
button2.OnClick = &window.on_click_base;//illegal operation on bound member function expression
如何做委托之类的事情?
How do anything like delegates?
推荐答案
On 8 / 13/2017 2017年5月33日,AndrzejBorucki写道:
On 8/13/2017 5:33 PM, AndrzejBorucki wrote:
是错误:
button2 .OnClick = window.on_click_base; //非标准语法;使用'&'创建指向成员的指针
button2.OnClick =& window.on_click_base; //对绑定成员函数表达式的非法操作
Are errors:
button2.OnClick = window.on_click_base; //non-standard syntax; use '&' to create a pointer to member
button2.OnClick = &window.on_click_base;//illegal operation on bound member function expression
button2.OnClick =& Window :: on_click_base;
button2.OnClick = &Window::on_click_base;
请注意,像OnClick这样的指向成员的指针仅指成员函数,但是不是要调用它的对象。需要单独存储指向所述对象的指针或引用。
Note that pointer-to-member like your OnClick only refers to a member function, but not to an object on which to call it. A pointer or reference to said object would need to be stored separately.
这篇关于如何指定类方法的指针? (代表?)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!