关于wxWidgets继承的问题

时间:2010-04-29 05:14:26

标签: c++ inheritance constructor wxwidgets

目前我正在尝试编写自己的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继承构造函数方法。有没有人碰巧知道它为什么不继承构造函数?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

C ++ 继承构造函数(你可能会想到Python, ;-)。没有显式声明ctors的类,如C ++中的CommandTextCtrl,只有C ++规则隐式提供的默认和复制ctors。

所以,你需要明确定义一个带有你想要的签名的ctor,它基本上会“弹回”到基类 - 当然是用CommandTextCtrl(...): wxTextCtrl(...) {}种语法。