【问题标题】:wxWidgets: wxString::wxString(int) private within this contextwxWidgets: wxString::wxString(int) 在这个上下文中是私有的
【发布时间】:2010-06-28 20:55:06
【问题描述】:

我有一个名为 TestClass 的 wxHtmlListBox 子类,但出现错误:

/usr/include/wx-2.8/wx/string.h:682:0 /usr/include/wx-2.8/wx/string.h:682: 错误:'wxString::wxString(int)' 是私人
MainFrame.cpp:106:0 MainFrame.cpp:106: 错误:在此上下文中

MainFrame.cpp 第 106 行是这样的:

TestClass *tc = new TestClass(this, wxID_ANY, wxDefaultPosition, 
                              wxDefaultSize, NULL, wxBORDER_DEFAULT);

TestClass 的文件可以在http://cl.ly/1VSo找到

对此有什么想法吗?

【问题讨论】:

    标签: c++ wxwidgets


    【解决方案1】:

    您将 wxBORDER_DEFAULT 传递给 const wxString 引用:

    TestClass(
        wxWindow* parent, // this
        wxWindowID id = wxID_ANY, // wxID_ANY
        const wxPoint& pos = wxDefaultPosition, // wxDefaultPosition
        const wxSize& size = wxDefaultSize, // wxDefaultSize
        long style = 0, // NULL
        const wxString& name = wxHtmlListBoxNameStr ); // wxBORDER_DEFAULT
    

    ...但是wxBORDER_DEFAULT 是枚举的一部分(本质上是一个整数):

    enum wxBorder
    {
        /*  this is different from wxBORDER_NONE as by default the controls do have */
        /*  border */
        wxBORDER_DEFAULT = 0,
    
        wxBORDER_NONE   = 0x00200000,
        wxBORDER_STATIC = 0x01000000,
        wxBORDER_SIMPLE = 0x02000000,
        wxBORDER_RAISED = 0x04000000,
        wxBORDER_SUNKEN = 0x08000000,
        wxBORDER_DOUBLE = 0x10000000, /* deprecated */
        wxBORDER_THEME =  0x10000000,
    
        /*  a mask to extract border style from the combination of flags */
        wxBORDER_MASK   = 0x1f200000
    };
    

    所以它使用了你提到的 wxString 的构造函数:

    wxString::wxString(int)
    

    ...这是私有的,因此您会遇到错误。尝试传入一个字符串或 NULL 代替:-)

    【讨论】:

    • 谢谢,我不敢相信我错过了。这和下面托马斯的回答都很好。
    【解决方案2】:

    您的第 106 行与 TestClass 的构造函数不匹配,尤其是最后一个参数/参数:

    TestClass(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxHtmlListBoxNameStr);
    

    TestClass 需要一个字符串,而不是边框​​样式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      相关资源
      最近更新 更多