类型转换

你可以像对正常指针进行类型转换一样,将RefPtr转换到基础类型。

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

这意味着任何接受const Glib::RefPtr<BaseType>&参数的函数也能接受const Glib::RefPtr<DerivedType>&对象。此转换和普通指针一样是隐式的。

你还可以将其转换为派生类型,但是语法和普通指针的语法略有不同。

auto refStore = std::dynamic_pointer_cast<Gtk::TreeStore>(refModel);
auto refStore2 = std::static_pointer_cast<Gtk::TreeStore>(refModel);