Ошибки Gtkmm «нет соответствующей функции для вызова»

#c #function #callback #gtkmm #signal-handling

#c #функция #обратный вызов #gtkmm #обработка сигналов

Вопрос:

Я новичок и изучаю Gtkmm, следуя их официальной документации.

Но этот пример:https://developer.gnome.org/gtkmm-tutorial/stable/sec-menus-examples.html.en#menu-example-main

не работает, и я получаю такого рода ошибки:

 examplewindow.cc: In constructor ‘ExampleWindow::ExampleWindow()’:
examplewindow.cc:18:67: error: no matching function for call to 
‘Gio::SimpleActionGroup::add_action(const char [12], 
sigc::bound_mem_functor0<void, ExampleWindow>)’
sigc::mem_fun(*this, amp;ExampleWindow::on_menu_file_new_generic));
                                                               ^
  

Указанная выше ошибка относится к этому фрагменту кода:

 refActionGroup->add_action("newstandard",
sigc::mem_fun(*this, amp;ExampleWindow::on_menu_file_new_generic));
  

Но функция «on_menu_file_new_generic» действительно существует. Итак, если функция обратного вызова действительно существует, то почему в ней написано «нет соответствующей функции»?

Есть помощь?

Комментарии:

1. Здесь компиляция выполняется нормально. Вы уверены, что используете версию gtkmm 3.0, а не 2.0? (ошибка связана с add_action , а не с on_menu_file_new_generic ).

2. @n.m. Да, я компилирую с использованием 3.0 g main.cc examplewindow.cc -o run pkg-config gtkmm-3.0 —cflags —libs`

3. Также, пожалуйста, покажите весь набор сообщений об ошибках, а не только первые несколько строк.

4. версия gcc 4.8.1 Вот полное сообщение об ошибке: [ pastebin.com/TZEDbhDr ]

5. Можете ли вы попробовать скомпилировать этот простой файл: pastebin.com/6KgftTHF ? Вы получаете какие-либо ошибки?

Ответ №1:

Эта ошибка возникает из-за более старой версии библиотеки glibmm. Моя текущая версия glibmm — 2.37.4, которая не поддерживает этот метод.

Этот перегруженный метод add_action () впервые появился в glibmm 2.37.6, поэтому для устранения этой ошибки мне нужно установить более новую версию glibmm.

Надеюсь, что другие также смогут устранить свои ошибки.

Комментарии:

1. И если вы хотите придерживаться своей текущей версии glibmm, тогда я предлагаю вам последовать этому примеру git.gnome.org/browse/gtkmm-documentation/tree/examples/book /…