Αλλαγή τύπου

Μπορείτε να μετατρέψετε μια RefPtrs σε βασικούς τύπους, ακριβώς όπως με τους κανονικούς δείκτες.

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

Αυτό σημαίνει ότι οποιαδήποτε μέθοδος που παίρνει ένα όρισμα const Glib::RefPtr<BaseType> μπορεί επίσης να πάρει έναν const Glib::RefPtr<DerivedType>. Η μετατροπή είναι σιωπηρή, ακριβώς όπως θα ήταν για έναν κανονικό δείκτη.

Μπορείτε επίσης να μετατρέψετε σε έναν παράγωγο τύπο, αλλά η σύνταξη είναι λίγο διαφορετική από ότι με έναν κανονικό δείκτη.

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