我还在学习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
。时期讨论结束。当文档说只有一种方法可以做事时,尝试用另一种方法做事就是未定义的行为。
存在这种限制的原因是黑匣子的一部分。你不能认为这与超出范围并删除它们自己有关。(也就是说,这种限制的一个可能原因是,当变量超出范围时,对象不会自动删除。工厂可能会在某个地方保存指针的副本以备将来使用。(