对于我的GUI,我有一个类可以为Gtk :: Entries添加更多功能。在那个类中,我有一个受保护的布尔变量。我有一些函数可以在需要时将boolean变量调整为true或false,这没有问题。当我尝试传递该布尔值时,问题发生的地方
例如,不起作用的是:
((Gtk::Entry *)w)->signal_activate().connect(sigc::bind<Gtk::Widget *>(sigc::mem_fun(*this, &Dialog::function), w2));
Dialog :: function看起来像这样:
void Dialog::function(Gtk::Widget *w2)
{
if((MyClass *) this)->get_boolean_val())
w2->do_something();
}
当我这样做时,布尔值将总是返回false,即使在变量类变量将改变之后也是如此。我通过编辑上面的内容证明了这一点。
((Gtk::Entry *)w)->signal_activate().connect(sigc::bind<Gtk::Widget *, Gtk::Entry *>(sigc::mem_fun(*this, &Dialog::function), w2, w));
并将函数体更改为:
void Dialog::function(Gtk::Widget *w2, Gtk::Entry *w)
{
if((MyClass *) w)->get_boolean_val())
w2->do_something();
}
这个有效,但我觉得有一种更好的方法来编辑'w'对象的布尔值并拉动它。与关键字“this”的工作方式类似。
我是C ++的新手