Ошибка в простейшей проге Gtk :: Builder get_widget () - PullRequest
0 голосов
/ 30 января 2012

Это моя программа:

#include <gtkmm.h>

int main (int argc, char* argv[])
{
Gtk::Main gtkmain(argc, argv);

Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file("practice_1_builder.glade");

Gtk::Window win;
builder->get_widget("winobj", win);
Gtk::Main::run(win);

return EXIT_SUCCESS;
}

Я использую эту команду в терминале для ее компиляции, как и для любой другой программы GTK +, я могу правильно скомпилировать:

g++ myprog.cpp -o myprog `dpkg-config --cflags --libs gtkmm-3.0`

Я получаю эту ошибку:

builder_0.cpp: In function ‘int main(int, char**)’:
builder_0.cpp:10:35: error: no matching function for call to ‘Gtk::Builder::get_widget(const char [7], Gtk::Window&)’
builder_0.cpp:10:35: note: candidate is:
/usr/include/gtkmm-3.0/gtkmm/builder.h:435:8: note: template<class T_Widget> void    Gtk::Builder::get_widget(const Glib::ustring&, T_Widget*&)

Я перепробовал множество твиддлов, определив win как указатель, преобразовав строковый литерал в Glib::ustring, ..., но не сработал.Оценка помогает!: -)

1 Ответ

3 голосов
/ 30 января 2012

Сообщение очень ясно для меня.T_Widget * & означает, что вы должны передать (ссылку на) указатель.Я изменил ваш код на это:

Gtk::Window *win;
builder->get_widget("winobj", win);
Gtk::Main::run(*win);

Теперь все должно работать как положено.

...