Bonjour,

J'ai ce message de mon compilo
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
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
#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 : 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
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
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 : 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
Edit : gcc version 4.2.3