wxWidgets: wxString :: wxString (int) private в этом контексте - PullRequest
0 голосов
/ 29 июня 2010

У меня есть подкласс wxHtmlListBox с именем TestClass, но я получаю ошибку:

/ 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

Есть мысли по этому поводу?

Ответы [ 2 ]

2 голосов
/ 29 июня 2010

Ваша строка 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 хочет строку, а не стиль границы.

2 голосов
/ 29 июня 2010

Вы передаете wxBORDER_DEFAULT в константную ссылку 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: -)

...