ошибка сегментации при попытке установить метку кнопки внутри лямбда-функции
Я пытался изучить gtkmm4, но столкнулся со странной ошибкой во время выполнения
Мой код:
#include <gtkmm.h>
#include <iostream>
class MyWindow : public Gtk::Window
{
public:
MyWindow();
};
MyWindow::MyWindow()
{
set_title("Basic application");
set_default_size(200, 200);
Gtk::Button button("Hello World");
button.set_label("test");
button.signal_clicked().connect([&button]() -> void {
button.set_label("testing!");
});
set_child(button);
}
int main(int argc, char* argv[])
{
auto app = Gtk::Application::create("org.gtkmm.examples.base");
return app->make_window_and_run<MyWindow>(argc, argv);
}
Ошибка:
[1] 183029 segmentation fault (core dumped)
Эта ошибка возникает, когда я нажимаю кнопку.
1 ответ
У вас есть висячая ссылка на местный
Gtk::Button
переменная, которая деконструируется при завершении конструктора. Попробуйте сделать
button
переменная-член вашего
MyWindow
класс.