IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

[gtkmm]erreur: «Gtk::Widget» is an inaccessible base of «OnRequestBox»


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 151
    Par défaut [gtkmm]erreur: «Gtk::Widget» is an inaccessible base of «OnRequestBox»
    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

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    Citation Envoyé par Anium Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class OnRequestBox : Gtk::VBox{
    Par défaut l'héritage est privé, si tu souhaite accéder au méthodes de la classe mère, il faut faire un héritage publique, comme pour ta classe Interface :

    Citation Envoyé par Anium Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class OnRequestBox : public Gtk::VBox{

    Que signifient public, private et protected ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 151
    Par défaut
    Oulala ... tant de prise de tête pour une erreur si bête !
    J'avais jamais vu cette erreur du compilo avant, je n'ai pas pensé à ça. Me voila averti maintenant.
    Merci pour le coup de main.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [gtkmm] Affichage de widgets dans une Gtk::Window
    Par Xavi91 dans le forum GTK+ avec C & C++
    Réponses: 13
    Dernier message: 31/01/2011, 17h43
  2. erreur lors d'une création de base
    Par LuckySoft dans le forum Oracle
    Réponses: 2
    Dernier message: 03/07/2006, 14h06
  3. Erreur lors de l'accès à la base par DAO
    Par omlip dans le forum Langage
    Réponses: 7
    Dernier message: 27/06/2006, 12h25
  4. Crystal Report 8 : Erreur dans la Dll de la base de donnée
    Par Mehdi_ab dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/12/2005, 14h42
  5. [TestStand] Erreur lors d'un accès à une Base de données
    Par capblans dans le forum Autres langages
    Réponses: 1
    Dernier message: 20/07/2005, 10h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo