c++ - 使用 Gtkmm 创建信号

标签 c++ c++11 c++14 gtkmm gtkmm3

我正在使用带有 C++ 的 gtkmm 库,我正在尝试创建一个允许更改当前选项卡的信号,但它不起作用。

其实我觉得问题出在这一行:

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

地点:

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

代码编译得很好,但是在执行时我得到了这一行:

Segmentation fault
(program exited with code: 139)

非常感谢您的帮助!

最佳答案

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

您正在通过引用捕获 bo,所以在执行信号时,我猜捕获变成了悬空引用。

复制试试(毕竟bo是一个指针):

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

关于c++ - 使用 Gtkmm 创建信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40822089/

相关文章:

java - 多种语言的读取-评估-打印循环 (REPL)

c++ - 向包含 POD 和非 POD 成员的现有结构添加 move 语义

c++ - 返回对此的右值引用的正确方法

c++ - 来自 Protocol Buffer 消息的普通结构

c++ - 将迭代器转换为指针?

c++ - main() 中带有枚举的 typedef 结构不起作用

c++ - 线程构造的幕后

c++ - 无法使用非成员开始和结束函数编写基于范围的内容

c++ - 使用 `const T &` 持有 Temporary 可以解决什么问题?

c++ - 为什么我需要在 constexpr 类中对非静态数组成员进行成员初始化?