gpt4 book ai didi

c++ - 将 lambda 与 sigc 库结合使用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:05 26 4
gpt4 key购买 nike

我想在 gotk++ 中将 lambda 表达式与 goocanvas 结合使用。根据我的理解,这意味着我必须能够将我的 lambda 放入 sigc++ 仿函数中。

我试过类似的东西:

sigc::slot<bool,  const Glib::RefPtr<Goocanvas::Item>& , GdkEventMotion* > slot2=
[]( const Glib::RefPtr<Goocanvas::Item>& item, GdkEventMotion* ev)->bool
{
cout << "Lambda " << endl; return false;
};

((Glib::RefPtr<Goocanvas::Item>&)item1)->signal_motion_notify_event().connect( slot2);

但这不会编译。

是否有机会让 sigc 在没有 sigc++ 中间体的情况下直接与 lambdas 或更好的 gtkmm 一起工作:-)

最佳答案

对于没有参数的 void 返回函数/方法,它非常简单,例如(海湾合作委员会 4.6、4.7):

 fileButton.signal_pressed().connect([this]{on_file_button_clicked();});

不幸的是,我无法获得返回值或获取参数的方法来进行编译,因此不得不求助于 sigc::mem_fun()。最近似乎有一些事件可以解决此问题,例如 this commit .如果您有 sigc++ 版本 2.2.11 或更高版本,您可以尝试定义 SIGC_FUNCTORS_DEDUCE_RESULT_TYPE_WITH_DECLTYPE,但我不知道它的效果如何。

相关的还有 this bug report .

关于c++ - 将 lambda 与 sigc 库结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13805883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com