I have N
buttons on an FLTK window. I'd like to know which button has been pressed by the user. How can I pass a number to each button's lambda callback function? So far, I tried this:
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();
}
Unfortunately, I get random-like numbers on the output (I assume some random memory garbage interpreted as integers.)
Could you please help me find a solution? Thanks!