不RefPtr所有Gtk::Builder变量是否明智,因为Gtk::Application已被引用



我还在学习gtkmm3,所以请考虑我的(愚蠢的(问题

我创建了一个示例gtkmm3应用程序,主要类以开头

#include "app-window-declaration.h"
// signal activate function was here
int
main (int argc, char *argv[])
{
Glib::RefPtr<Gtk::Application> app =
Gtk::Application::create("io.gitlab.Keyikedalube.Sample-gtkmm");
...
}

实现类应用程序窗口声明继承了Gtk::window,并使用了三个或多个Gtk::Builder资源,所有这些资源都用Glib::RefPtr引用,因为在第26章中,gtkmm文档解释了必须这样做,以便

Gtk::Builder必须通过Glib::RefPtr使用。像所有这样的类一样,您需要使用create((方法来实例化它

Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file("basic.glade");

然而,(这是我愚蠢的问题(因为,在主函数中,变量app已经被引用了。。。当应用程序执行时,生成器变量不会自动超出范围并自行删除吗?

必须通过Glib::RefPtr使用Gtk::Builder。时期讨论结束。当文档说只有一种方法可以做事时,尝试用另一种方法做事就是未定义的行为。

存在这种限制的原因是黑匣子的一部分。你不能认为这与超出范围并删除它们自己有关。(也就是说,这种限制的一个可能原因是,当变量超出范围时,对象不会自动删除。工厂可能会在某个地方保存指针的副本以备将来使用。(

相关内容

  • 没有找到相关文章

最新更新