一 base 單例模式, app 函數(shù)模板
2023-03-31 20:02 作者:FineClassFuture | 我要投稿
單例模式
????GUI框架(如QT,GTKMM)都為單線程處理模式。
????(為何不是多線程,詳見網(wǎng)絡(luò)文章《多線程 GUI 工具包:無法實(shí)現(xiàn)的夢(mèng)想?(翻譯)》https://zhuanlan.zhihu.com/p/44639688)
????都會(huì)有一個(gè)Application,使用單例模式思想。
????c++單例模式實(shí)現(xiàn)(網(wǎng)上抄的):

????使用靜態(tài)局部變量。
有人說需要加鎖來提供線程安全,也有人說c++11保證例靜態(tài)局部對(duì)象是線程安全的。?待測(cè)!
????GTKMM AppWindow單例模式

函數(shù)模板
????make_window_and_run很有意思,這是叫“函數(shù)模板”吧?

????
編譯檢查 :static_assert(std::is_base_of<AppWindow, T_AppWindow>::value);
注意T_Args:使用“std::forward<T_Args>(args)...”來將其構(gòu)造函數(shù)所需要的參數(shù)傳入
注意:該函數(shù)實(shí)現(xiàn)在.h頭文件中,否則會(huì)提示func<RealClass>(...)未定義
使用:?jiǎn)卫J紸PP
????這樣main()函數(shù)就簡(jiǎn)單了,變成了固定模式來隱藏后面可選框架的細(xì)節(jié)



標(biāo)簽: