Могу ли я изменить заголовок FL_Window, отличный от аргумента конструктора? - PullRequest
1 голос
/ 10 января 2012
MainWindow::MainWindow(int w, int h, const string& c)
: Fl_Window(w, h, c.c_str()) // Don't call constructor over here
{
    script.load_file(WIN_CONFIG_SCRIPT);

    int width = script.get_global_int("width");
    int height = script.get_global_int("height");

    const char* caption = script.get_global_string("caption").c_str();

    /** CALL CONSTRUCTOR NOW **/

    //NOTE: I don't know a way to change an FLTK Fl_Window's Caption after 
    //initialising it.

    Toolbar* toolbar = new Toolbar(0, 0, this->w(),30);
    toolbar->add_button("Hello");
    toolbar->add_button("World!");

    end();
}

Как инициализировать базовый класс внутри конструктора? В качестве альтернативы, как мне изменить заголовок FLTK Fl_Window после его инициализации? Есть ли какой-нибудь другой выход из этого беспорядка?

1 Ответ

6 голосов
/ 10 января 2012

Как инициализировать базовый класс внутри конструктора?

Вы не можете.

Базовая часть экземпляра должна быть инициализирована перед производной частью экземпляра или любым из его членов.


Как изменить заголовок FLTK Fl_Window после его инициализации?

В документации написано, что вы можете позвонить:

label("my caption")

Что с этим не так?


Есть ли другой выход из этого беспорядка?

номер


Кроме того, вы должны обновить до FLTK 2.

...