wxWidgets: wxString::wxString(int) частный в этом контексте

У меня есть подкласс 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: ошибка: в этом контексте

Строка 106 MainFrame.cpp такова:

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

Файлы для TestClass можно найти по адресу http://cl.ly/1VSo.

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


person Justin Mrkva    schedule 28.06.2010    source источник


Ответы (2)


Вы передаете 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 :-)

person Jon Cage    schedule 28.06.2010
comment
Спасибо, не могу поверить, что пропустил это. Это и ответ Томаса ниже отлично сработали. - person Justin Mrkva; 29.06.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 нужна строка, а не стиль границы.

person Thomas Matthews    schedule 28.06.2010