Создайте сигнал с помощью Gtkmm

Я использую библиотеку gtkmm с C++ и пытаюсь создать сигнал, который позволяет изменить текущую вкладку, но это не работает.

На самом деле я думаю, что проблема исходит из этой строки:

menuit->signal_activate().connect([&bo]() {bo->next_page();}); 

Где:

menuit = Gtk::MenuItem
bo = Gtk::Notebook

Код компилируется хорошо, но при выполнении я получаю эту строку:

Segmentation fault
(program exited with code: 139)

Большое спасибо за вашу помощь!


person Community    schedule 26.11.2016    source источник
comment
Это не создание сигнала. Это подключение к сигналу или подключение обработчика сигнала к сигналу.   -  person murrayc    schedule 08.12.2016


Ответы (1)


menuit->signal_activate().connect([&bo]() {bo->next_page();});

Вы захватываете bo по ссылке, поэтому во время выполнения сигнала я предполагаю, что захват стал оборванной ссылкой.

Попробуйте скопировать (ведь bo — это указатель):

menuit->signal_activate().connect([bo]() {bo->next_page();});
person rgmt    schedule 26.11.2016