0

我想覆盖“popupwin.h”中的“DismissAndNotify”,但它仍在调用内置函数。

class WXDLLIMPEXP_CORE wxPopupTransientWindowBase : public wxPopupWindow {
protected:
    void DismissAndNotify()
    {
        Dismiss();
        OnDismiss();
    }
}
class WXDLLIMPEXP_CORE wxPopupTransientWindow : public wxPopupTransientWindowBase {
    virtual void DismissAndNotify(); // I want to call this function
}

PS:我是 wxWidgets 的新手

4

1 回答 1

0

DismissAndNotify()根本不是公共 API 的一部分,因此即使它有效,使用它也是一个非常糟糕的主意,因为您的代码很容易停止使用较新的 wxWidgets 版本,甚至在另一个平台上使用相同版本。

它不起作用的原因是它甚至不是虚拟的,所以你不能像你试图做的那样覆盖它。相反,您可以覆盖Dismiss()既是公共的(记录的)又是虚拟的,或者OnDismiss()如果您只想对被解雇的弹出窗口做出反应。

于 2020-12-17T13:03:14.403 回答