在 C++ 桌面应用程序中,我有许多 void 函数,例如:
void myfunction01(wxCommandEvent& event);
void myfunction02(wxCommandEvent& event);
...
然后我有一个名为 BUTTON 的 wxButton 数组。
我想将功能绑定到循环中的按钮,例如:
for (i = 1; i <= 100; ++i) {
BUTTON[i]->Bind(wxEVT_BUTTON, &MyFrame::function[i], this);
}
但是我找不到一种方法将这些函数放入数组中...... 有办法做到吗? 我看到了其他类似的问题,但没有一个能帮助我解决问题
您可以创建一个这样的数组:
const std::array<void (MyFrame::*)(wxCommandEvent&), 100> functions = {{
&MyFrame::myfunction01,
&MyFrame::myfunction02,
// ...
}};
然后
for (i = 0; i < 100; ++i) {
BUTTON[1 + i]->Bind(wxEVT_BUTTON, function[i], this);
}
但是,避免循环在这里可能更有意义。 功能似乎无关。 (否则
void myfunction01(int index, wxCommandEvent& event);
可能有意义)。
所以我什至会将绑定添加到特定按钮,而不是从数组中添加。
// BUTTON[1] = /*..*/
BUTTON[1]->Bind(wxEVT_BUTTON, &MyFrame::myfunction01, this);
// BUTTON[2] = /*..*/
BUTTON[2]->Bind(wxEVT_BUTTON, &MyFrame::myfunction02, this);
// BUTTON[3] = /*..*/
BUTTON[3]->Bind(wxEVT_BUTTON, &MyFrame::myfunction03, this);
// ...