Forçage de type

Vous pouvez forcer les RefPtrs à des types de base, comme des pointeurs normaux.

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);