wxObjectEventFuntion 与 wxCommandEvent

问题描述 投票:0回答:1

为什么 wxsmith 将 wxObjectEventFunction 绑定到连接分配中,并将 wxCommandEvent 绑定到实现函数中?

即。进入 OnButtonClick

编译器会发出警告: C:..\Main.cpp|127|警告:在指向成员类型的不兼容指针之间进行转换,从“void (MainFrame::)(wxCommandEvent&)”到“wxObjectEventFunction”{aka“void (wxEvtHandler::)(wxEvent&)” '} [-Wcast 函数类型]|

有没有办法消除这个警告?

c++ event-handling wxwidgets
1个回答
0
投票

您可以将

-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;
}
© www.soinside.com 2019 - 2024. All rights reserved.