wxWidgets:wxString :: wxString(int)在此上下文中是私有的

时间:2010-06-28 20:55:07

标签: c++ wxwidgets

我有一个名为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);

可以在http://cl.ly/1VSo

找到TestClass的文件

对此有何想法?

2 个答案:

答案 0 :(得分:2)

您将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: - )

答案 1 :(得分: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想要一个字符串,而不是边框​​样式。