按照在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指针需要正确初始化。
您能为此回调实现建议任何适当的设计/实现吗?