2

我想将信号连接到 window.signal_delete_event,但它失败并显示以下错误消息:

  • 不匹配调用 '(sigc::bound_mem_functor0) (_GdkEventAny* const&)' OpticalInput
  • 带有值的返回语句,在函数中返回 'void' [-fpermissive]
  • void 值没有被忽略,因为它应该被忽略

那是导致错误的代码行:

window.signal_delete_event().connect(sigc::mem_fun(this,&GUIWindow::onExitClicked));

指向的成员函数是这个:

void GUIWindow::onExitClicked()
{
    *state = false;
    Gtk::Main::quit();
}

有想法该怎么解决这个吗?

4

1 回答 1

4

您的方法必须与信号的签名相匹配。在 gtkmm 文档中signal_delete_event(),给出了以下原型:

bool on_my_delete_event(GdkEventAny* event)

使用您的命名,该方法必须定义如下:

bool GUIWindow::onExitClicked(GdkEventAny* event) { ... }

返回值用于指示您是否已完全处理该事件。如果您返回 true,则此事件的其他处理程序将看不到它。

于 2013-04-25T18:21:54.540 回答