函数中的'this'调用指向与变量不同的地址

时间:2018-02-21 20:26:44

标签: c++ gtk gtkmm

对于我的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 ++的新手

0 个答案:

没有答案