Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++11 回调函数未提供所需的输出_C++11_Design Patterns_Callback - Fatal编程技术网

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

C++11 回调函数未提供所需的输出,c++11,design-patterns,callback,C++11,Design Patterns,Callback,根据下面在coliru链接中共享的代码片段,每次用户单击第i个按钮时,m_单击[i]和m_总单击次数都应该增加。为了实现这一点,类MyFrame将在每个按钮上注册一个“on\u click-handler”回调。正在尝试注册您单击的按钮,因为回调不起作用。 m\u按钮[i]。在单击处理程序上(MyFrame::button\u clicked)//未给出预期结果 下面是源代码的coliru链接。 以下是使用print_stats方法基于f1和f2对象的以下测试用例的预期输出 //MyFrame

根据下面在coliru链接中共享的代码片段,每次用户单击第i个按钮时,
m_单击[i]
m_总单击次数
都应该增加。为了实现这一点,类
MyFrame
将在每个按钮上注册一个“
on\u click-handler”
回调。正在尝试注册您单击的按钮,因为回调不起作用。
m\u按钮[i]。在单击处理程序上(MyFrame::button\u clicked)//未给出预期结果

下面是源代码的coliru链接。

以下是使用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_单击(2)已初始化 静态和初始化值应与MyFrame初始化对象值相同,而不是静态值

(2) 如果不声明静态m_total_clicks和m_clicks,还有其他方法可以实现相同的效果吗

(3) 在第20行,m_ftr指针需要正确初始化

您能为这个回调实现提出合适的设计/实现建议吗