[gtkmm]erreur: «Gtk::Widget» is an inaccessible base of «OnRequestBox»
Bonjour,
J'ai ce message de mon compilo
Code:
erreur: «Gtk::Widget» is an inaccessible base of «OnRequestBox»
Je ne comprends pas du tout.
J'ai une instance d'une classe (OnRequestBox) dans une autre (Interface). La classe OnRequestBox hérite de VBox. Tout compile bien si je n'ajoute pas l'objet dans un conteneur. Mais dès le moment que je l'ajoute dans une box, notebook par les méthodes add ou append_page, le compilo me sort cette erreur.
J'ai réduit ma classe OnRequestBox à son strict minimum, toujours la même erreur.
Voici un bout du code :
Interface.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #ifndef __INTERFACE_H__
#define __INTERFACE_H__
#include <gtkmm.h>
#include <iostream>
#include "OnRequestBox.h"
using namespace std;
class Interface : public Gtk::Window{
public:
Interface();
virtual ~Interface();
protected:
virtual void on_menu_file_quit();
virtual void on_menu_file();
//Child widgets:
Gtk::VBox m_Box;
Gtk::Notebook m_notebook;
// Menu
Glib::RefPtr<Gtk::UIManager> m_refUIManager;
Glib::RefPtr<Gtk::ActionGroup> m_refActionGroup;
// Toolbar
Widget * m_toolbar;
OnRequestBox m_onrequestbox;
// Bar de status
Gtk::Statusbar m_statusbar;
};
#endif |
Interface.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include "../inc/Interface.h"
#include <iostream>
Interface::Interface() :
m_notebook(),
m_toolbar(NULL),
m_onrequestbox(),
m_statusbar()
{
...
m_Box.add(m_notebook);
// Add a call page
m_notebook.append_page(m_onrequestbox, "2 appels à traiter"); // BUG ICI
m_Box.pack_start(m_statusbar, Gtk::PACK_SHRINK);
show_all_children();
}
... |
OnRequestBox.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #ifndef __ONREQUESTBOX_H__
#define __ONREQUESTBOX_H__
#include <gtkmm.h>
#include "TreeviewPopup.h"
class OnRequestBox : Gtk::VBox{
public :
OnRequestBox();
/*
protected :
Gtk::ScrolledWindow m_scrolledwindow;
ModelColumns m_columns;
TreeviewPopup m_treeview;
Gtk::HBox m_box;
Gtk::Button m_validate, m_cancel;
*/
};
#endif |
OnRequestBox.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include "../inc/OnRequestBox.h"
OnRequestBox::OnRequestBox()/* :
m_scrolledwindow(),
m_treeview(),
m_box(),
m_validate(Gtk::Stock::OK),
m_cancel(Gtk::Stock::CANCEL)*/
{
/*
// Add treeview in scrolledwindow
m_scrolledwindow.add(m_treeview);
// Only show scrollbars when they are necessary
m_scrolledwindow.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
add(m_scrolledwindow);
m_box.add(m_cancel);
m_box.add(m_validate);
add(m_box);
show_all_children();*/
} |
Et l'erreur exacte :
Code:
1 2 3 4 5 6
| $ make clean && make
rm -rf obj/Interface.o obj/main.o obj/ModelColumns.o obj/OnRequestBox.o obj/TreeviewPopup.o Test
g++ -ggdb -Wall -ansi -pedantic -I/usr/include/gtkmm-2.4 -I/usr/lib/gtkmm-2.4/include -I/usr/include/glibmm-2.4 -I/usr/lib/glibmm-2.4/include -I/usr/include/gdkmm-2.4 -I/usr/lib/gdkmm-2.4/include -I/usr/include/pangomm-1.4 -I/usr/include/atkmm-1.6 -I/usr/include/gtk-2.0 -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/gtk-2.0/include -I/usr/include/cairomm-1.0 -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1 -I/usr/include/atk-1.0 -o obj/Interface.o -c src/Interface.cpp
src/Interface.cpp: In constructor «Interface::Interface()»:
src/Interface.cpp:123: erreur: «Gtk::Widget» is an inaccessible base of «OnRequestBox»
make: *** [obj/Interface.o] Erreur 1 |
Edit : gcc version 4.2.3