gtkmm 使用这种结构提供小部件的生命周期管理:
Gtk::Widget* aWidget = Gtk::manage(new Widget());
Gtk::Widget containerWidget;
containerWidget.add(*aWidget);
这将 aWidget 的生命周期管理委托给 containerWidget。当 containerWidget 被清理时,它也会清理 aWidget——类似于 Delphi 的 'owner' 概念。
我们还有几种类型的智能指针,特别是 C++ 11 智能指针模板,我到处都在使用它。
我发现管理/添加语法更易于使用且更简洁,但它不是 C++ 标准的一部分,它是 gtkmm 特定的功能,这让我认为我应该坚持使用 std::shared_ptr 等。
所以我想知道 std 智能指针与 gtkmm 管理/添加模型的优点/缺点是什么(除了在删除所有者容器后需要引用的情况,或者当你有一个没有的顶级小部件时包含小部件)。