【发布时间】:2020-02-19 22:00:15
【问题描述】:
我在 FLTK 窗口上有 N 按钮。我想知道用户按下了哪个按钮。如何将数字传递给每个按钮的 lambda 回调函数?到目前为止,我试过这个:
int main(int argc, char **argv) {
Fl_Window *w_main = new Fl_Window(640, 480);
std::vector<int> nums;
for (int i = 0; i < 5; i++) {
nums.push_back(i);
Fl_Button *btn1 = new Fl_Button(50 * i, 0, 50, 50);
char const *num = std::to_string(i).c_str();
btn1->label(num);
btn1->callback(
[](Fl_Widget *w, void *data) { std::cout << "Clicked on: " << (int)data << std::endl; },
&nums[i]);
}
w_main->show();
return Fl::run();
}
不幸的是,我在输出中得到了类似随机的数字(我假设一些随机内存垃圾被解释为整数。)
你能帮我找到解决办法吗?谢谢!
【问题讨论】: