Rupert Swarbrick wrote: >I've seen various "inaccessible base errors" in searching on Google, but >I couldn't quite find this one and I don't understand quite what's going on. > >I have a class, FileEntry (which consists of an entry widget and a >button that spawns a file selection dialog from Gtkmm): > >class FileEntry : protected Gtk::HBox >{ >public: > FileEntry(bool open=true, > std::string defaultname=""); >protected: > void on_button(); > ...stuff... >}; > >(Note that it inherits from _protected_ HBox) > >Now, in FileEntry::FileEntry, I need to connect the button clicked event >for said button to a handler. Thus I create the slot with this line: > >sigc::slot<void> sl = sigc::mem_fun(*this, &FileEntry::on_button); > >Sadly, I now get these g++ error: > >/usr/include/sigc++-2.0/sigc++/type_traits.h: In instantiation of 'const >bool sigc::is_base_and_derived<sigc::trackable, rjs::FileEntry>::value': >/usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1792: instantiated >from 'sigc::bound_mem_functor0<void, rjs::FileEntry>' >FileEntry.cc:11: instantiated from here >/usr/include/sigc++-2.0/sigc++/type_traits.h:132: error: >'sigc::trackable' is an inaccessible base of 'rjs::FileEntry' > >Now then, I can compile happily by inheriting from public Gtk::HBox, but >this really doesn't seem like it should be necessary - surely as we're >in the constructor the public/private/whatever should make no difference? > >I'd really like to know what the heck's going on here - does mem_fun do >something very wierd? > > Please, consider my answer like a guess.
"sigc::mem_fun" is a wrapper that construct sigc::slot object. Last one should have public access to your object sigc::trackable destructor to disconnect slot/signals when your object destroyed. Probably, you better do investigate source codes either documentation files for more information. Regards, -andrew _______________________________________________ libsigc-list mailing list libsigc-list@gnome.org http://mail.gnome.org/mailman/listinfo/libsigc-list