我有一个名为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的文件

有什么想法吗?

最佳答案

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

关于c++ - wxWidgets:wxString::wxString(int)在此上下文内是私有(private)的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3136055/

10-13 04:37