неопределенная ошибка конструктора c ++ для кнопки gtkmm

0

Я начинаю делать 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, она отлично работает (к сожалению, я не могу этого сделать, потому что текст кнопки будет определен в конструкторе).

  • 2
    Это не конструкция. Вы пытаетесь назвать объект как функтор. Используйте список инициализатора конструктора.
  • 0
    Я хочу знать, как я мог бы сделать это в блоке конструктора. Неужели нет пути?
Показать ещё 1 комментарий
Теги:
constructor
gtkmm

2 ответа

1

Эта

m_button1("Button 1")

не является вызовом конструктора. это вызов operator function с аргументом типа const char[9]

Конструктор кнопки вызывается, когда создается объект типа MainWindow.

  • 0
    Так как же тогда вызвать конструктор?
  • 1
    @ user1111652 Я не знаю эту библиотеку, но я думаю, что у класса Button есть метод, который позволяет задавать текст кнопки.
0

Поскольку кнопка уже инициализирована, просто установите метку:

m_button1.set_label("Button 1");

Документация здесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню