Bonjour,
J'ai ce message de mon compiloJe ne comprends pas du tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part erreur: «Gtk::Widget» is an inaccessible base of «OnRequestBox»
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
Interface.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
OnRequestBox.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Et l'erreur exacte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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();*/ }Edit : gcc version 4.2.3
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager