Forçage de type

You can cast RefPtrs to base types, just like normal pointers.

Glib::RefPtr<Gtk::TreeStore> refStore = Gtk::TreeStore::create(columns);
Glib::RefPtr<Gtk::TreeModel> refModel = refStore;

Cela signifie que toute fonction membre prenant en paramètre un const Glib::RefPtr<BaseType> peut également prendre un const Glib::RefPtr<DerivedType>. Le forçage est implicite, tout comme pour un pointeur normal.

Vous pouvez aussi faire un forçage sur un type dérivé, mais la syntaxe est alors différente de celle pour un pointeur normal.

Glib::RefPtr<Gtk::TreeStore> refStore =
Glib::RefPtr<Gtk::TreeStore>::cast_dynamic(refModel);
Glib::RefPtr<Gtk::TreeStore> refStore2 =
Glib::RefPtr<Gtk::TreeStore>::cast_static(refModel);