无法直接从我的代码中调用事件处理程序。我在2年前在这里找到了同样的问题。原始问题
但是该行me_InsertCommentText(wxCommandEvent());
未编译(mingw32-gcc 4.8,win7,代码块,wxFormBuilder)
错误:没有匹配的函数来调用'mjpgen_wdDialog :: me_InsertCommentText(wxCommandEvent)'注意:候选者是:注意:void mjpgen_wdDialog :: me_InsertCommentText(wxCommandEvent&)
对我来说,这似乎是由引用参数调用引起的。我怎样才能使它正常工作?
关于使用命名的临时变量的答案在技术上是正确的,但重要的是,您实际上根本不应该这样做。处理程序只应该从wxWidgets的调用,而不是调用一些OnFoo(wxFooEvent&)
直接,你应该重构你的代码只是调用了一些新DoFoo()
的OnFoo()
,然后调用DoFoo()
您的代码的其余部分,如果你需要它。
当使用C ++ 11时,这变得更加简单,因为OnFoo()
在这种情况下甚至根本不需要,而只需编写
whatever->Bind(wxEVT_FOO, [=](wxCommandEvent&) { DoFoo(); });
以避免额外的功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句