回调函数未提供所需的输出

时间:2019-05-30 15:17:25

标签: c++11 design-patterns callback

按照在coliru链接中共享的以下代码段,每当用户单击第i个按钮时,m_clicks[i]m_total_clicks都应递增。为此,类MyFrame将为每个按钮注册一个“ on_click-handler"”回调。由于回调不起作用,尝试注册button_clicked。
m_pushbuttons[i].on_click_handler(MyFrame::button_clicked); //没有得到预期的结果

下面是用于源代码的coliru链接。 https://coliru.stacked-crooked.com/a/c15865d59b41341f

这是使用print_stats方法基于f1和f2对象的以下测试用例得出的预期输出。

//MyFrame f1(2)
//f1.m_buttons[0].click();
//f1.m_buttons[0].click();
//f1.m_buttons[0].click();
//f1.m_buttons[1].click();
//f1.m_buttons[1].click();

//f1.print_stats();

//MyFrame f2(3);
//f2.m_buttons[2].click();
//f2.m_buttons[2].click();
//f2.m_buttons[2].click();
//f2.m_buttons[1].click();
//f2.print_stats();
// Should print:
// Total Clicks: 4
// Button[0] clicks: 0
// Button[1] clicks: 1
// Button[2] clicks: 3

因此,基本上我需要编写一个客户端类,以便在实例化时将创建N个此类按钮(其中N是构造函数的时间参数)。    客户类希望注册一个回调来跟踪按钮单击,但是在当前实现中,存在两个问题。

(1)std :: vector MyFrame :: m_clicks(2)已初始化  静态和初始化值应与MyFrame初始化的对象值相同,而不是静态值。

(2)在不声明静态m_total_clicks和m_clicks的情况下,是否还有其他方法可以实现相同的目的。

第3行的

(3) 20,m_ftr指针需要正确初始化。

您能为此回调实现建议任何适当的设计/实现吗?

0 个答案:

没有答案