Я начинаю делать GUI в gtkmm. Это упрощенный заголовок:
#include <gtkmm/button.h>
#include <gtkmm/window.h>
class MainWindow : public Gtk::Window
{
public:
MainWindow();
virtual ~MainWindow();
protected:
Gtk::Button m_button1;
};
Я хотел бы определить свою кнопку в блоке конструктора (не в части инициализации), например:
#include <gtkmm/button.h>
MainWindow::MainWindow()
m_Box(Gtk::ORIENTATION_VERTICAL,40)
{
m_button1("Button 1")
add(m_button1);
show_all_children();
}
Но конструкция моей кнопки дает ошибку:
error: no match for call to ‘(Gtk::Button) (const char [9])
Хотя если я положу конструкцию кнопки с тем же синтаксисом в intializer, она отлично работает (к сожалению, я не могу этого сделать, потому что текст кнопки будет определен в конструкторе).
Эта
m_button1("Button 1")
не является вызовом конструктора. это вызов operator function
с аргументом типа const char[9]
Конструктор кнопки вызывается, когда создается объект типа MainWindow
.
Поскольку кнопка уже инициализирована, просто установите метку:
m_button1.set_label("Button 1");
Документация здесь.