一 base 单例模式, app 函数模板
2023-03-31 20:02 作者:FineClassFuture | 我要投稿
单例模式
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()函数就简单了,变成了固定模式来隐藏后面可选框架的细节


