目前我正在尝试编写自己的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继承构造函数方法。有没有人碰巧知道它为什么不继承构造函数?
提前感谢您的帮助!
答案 0 :(得分:5)
C ++ 不继承构造函数(你可能会想到Python,做 ;-)。没有显式声明ctors的类,如C ++中的CommandTextCtrl
,只有C ++规则隐式提供的默认和复制ctors。
所以,你需要明确定义一个带有你想要的签名的ctor,它基本上会“弹回”到基类 - 当然是用CommandTextCtrl(...): wxTextCtrl(...) {}
种语法。