2010-06-28 47 views
0

我有wxHtmlListBox的子類,稱爲TestClass的,但我得到的錯誤:wxWidgets的:wxString :: wxString(INT)這個範圍內的私人

/usr/include/wx-2.8/wx/string.h:682:0 /usr/include/wx-2.8/wx/string.h:682: error: 'wxString::wxString(int)' is private
MainFrame.cpp:106:0 MainFrame.cpp:106: error: within this context

MainFrame.cpp線106是這樣的:

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

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

對此的任何想法?

回答

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,而不是:-)

+0

謝謝,我不能相信我錯過了。這和托馬斯的答案都很好。 – 2010-06-28 21:30:12

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想要一個字符串,而不是一個邊框樣式。