为什么 wxsmith 将 wxObjectEventFunction 绑定到连接分配中,并将 wxCommandEvent 绑定到实现函数中?
即。进入 OnButtonClick
编译器会发出警告: C:..\Main.cpp|127|警告:在指向成员类型的不兼容指针之间进行转换,从“void (MainFrame::)(wxCommandEvent&)”到“wxObjectEventFunction”{aka“void (wxEvtHandler::)(wxEvent&)” '} [-Wcast 函数类型]|
有没有办法消除这个警告?
您可以将
-Wno-cast-function-type
添加到编译器参数中,工作示例
WxWidgets 正在执行与此等效的操作,它有效,但它是未定义的行为。
struct A
{
void foo(const A&) {}
};
struct B : A
{
void func(const B&) {}
};
void bar(void (A::* x)(const A&)) {}
int main() {
B b;
bar(reinterpret_cast<void(A::*)(const A&)>(&B::func));
return 0;
}