У меня есть кнопки N
в окне FLTK. Я хотел бы знать, какая кнопка была нажата пользователем. Как я могу передать номер функции обратного вызова лямбда каждой кнопки? До сих пор я пробовал это:
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();
}
К сожалению, я получаю на выходе случайные числа (я предполагаю, что какой-то случайный мусор памяти интерпретируется как целые числа).
Не могли бы вы помочь мне найти решение? Спасибо!