c++ 中的 void 函数数组

问题描述 投票:0回答:1

在 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);
}

但是我找不到一种方法将这些函数放入数组中...... 有办法做到吗? 我看到了其他类似的问题,但没有一个能帮助我解决问题

c++ wxwidgets
1个回答
0
投票

您可以创建一个这样的数组:

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);
// ...
© www.soinside.com 2019 - 2024. All rights reserved.