直接从我的代码调用事件处理程序时遇到问题。两年前我在这里发现了同样的问题。原问题
但线me_InsertCommentText(wxCommandEvent());
未编译(mingw32-gcc 4.8、win7、codeblocks、wxFormBuilder)
错误:没有匹配的函数可用于调用“mjpgen_wdDialog::me_InsertCommentText(wxCommandEvent)”
注:候选人是:
注意:void mjpgen_wdDialog::me_InsertCommentText(wxCommandEvent&)
对我来说,这似乎是由引用参数调用引起的。
我怎样才能让它发挥作用?
关于使用命名临时变量的答案在技术上是正确的,但重要的是您实际上不应该首先这样做。处理程序应该只从 wxWidgets 调用,而不是调用一些OnFoo(wxFooEvent&)
你应该直接重构你的代码以调用一些新的DoFoo()
from OnFoo()
然后打电话DoFoo()
如果需要的话,可以从其余代码中获取。
使用 C++11 时这变得更加简单,因为您甚至不需要OnFoo()
在这种情况下,可以写
whatever->Bind(wxEVT_FOO, [=](wxCommandEvent&) { DoFoo(); });
以避免额外的功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)