当前,我正在尝试编写自己的wxObject,并且我希望该类基于wxTextCtrl类。

目前,这是我所拥有的:

class CommandTextCtrl : public wxTextCtrl {
    public:
        void OnKey(wxKeyEvent& event);
    private:
        DECLARE_EVENT_TABLE()
};


然后,稍后有这行代码,它不是这样的:

CommandTextCtrl *ctrl = new CommandTextCtrl(panel, wxID_ANY, *placeholder, *origin, *size);


...并且当我尝试编译程序时,我收到此错误:

error: no matching function for call to ‘CommandTextCtrl::CommandTextCtrl(wxPanel*&, <anonymous enum>, const wxString&, const wxPoint&, const wxSize&)’


似乎它没有继承wxTextCtrl的构造方法。有谁碰巧知道为什么它不继承构造函数?

在此先感谢您的帮助!

最佳答案

C ++不继承构造函数(您可能想到的是Python,-)。没有显式声明的ctor的类,例如C ++中的CommandTextCtrl,仅具有默认值,并且由C ++规则隐式提供了复制ctor。

因此,您需要使用所需的签名显式定义ctor,当然,基本上可以用CommandTextCtrl(...): wxTextCtrl(...) {}语法将其“反弹”到基类。

07-28 07:47