GUI框架(如QT,GTKMM)都为单线程处理模式。
(为何不是多线程,详见网络文章《多线程 GUI 工具包:无法实现的梦想?(翻译)》https://zhuanlan.zhihu.com/p/44639688)
(相关资料图)
都会有一个Application,使用单例模式思想。
c++单例模式实现(网上抄的):
使用静态局部变量。
有人说需要加锁来提供线程安全,也有人说c++11保证例静态局部对象是线程安全的。 待测!
GTKMM AppWindow单例模式
make_window_and_run很有意思,这是叫“函数模板”吧?
编译检查 :static_assert(std::is_base_of<AppWindow, T_AppWindow>::value);
注意T_Args:使用“std::forward<T_Args>(args)...”来将其构造函数所需要的参数传入
注意:该函数实现在.h头文件中,否则会提示func<RealClass>(...)未定义
使用:单例模式APP
这样main()函数就简单了,变成了固定模式来隐藏后面可选框架的细节
X 关闭
Copyright © 2015-2032 华西珠宝网版权所有 备案号:京ICP备2022016840号-35 联系邮箱: 920 891 263@qq.com