Conversión de tipos

Puede convertir RefPtr a tipos base, al igual que a los punteros normales.

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

Esto significa que cualquier método que tome un argumento const Glib::RefPtr<BaseType> también puede tomar un const Glib::RefPtr<DerivedType>. La conversión es implícita, al igual que lo sería con un puntero normal.

También puede convertir a un tipo derivado, pero la sintaxis es un poco diferente que con un puntero 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);