精華區beta Programming 關於我們 聯絡資訊
※ 引述《yoco.bbs@bbs.wretch.cc (眠月..)》之銘言: : ※ 引述《tinlans.bbs@whshs.cs.nccu.edu.tw (汀)》之銘言: : > 這個部分一直讓我覺得 wxwidgets 的設計者很腦殘, : 當我看到 wxWidgets 用 "notorious" 來形容 template 的時候 : 我就覺得設計者很腦殘了 : 不過因為 wxWidgets 的支持者眾多,所以我一直都不敢講  ̄▽ ̄ 那表示你沒有抓到 wxWidgets 的重點所在 http://www.wxwidgets.org/ 首頁就寫明了 wxWidgets lets developers create applications for Win32, Mac OS X, GTK+, X11, Motif, WinCE, and more using one codebase. 他的重點在「跨平台」,而非先進的 C++ 支援 如果你有仔細閱讀 wx 文件裡面關於跨平台的部份 他有很詳細的解釋為何不用 template 因為有很多平台上的 C++ compiler 是不完整的 在現今的主流平台上都有,但是在十幾年前 wx 出生的年代, 以及某些 wx 能支援的平台上,C++ compiler 是沒有 template 或 RTTI 的 會不用 STL, template 的主因,是因為跨平台相容性的關係 wx 甚至可以跑在 PDA 上,我記得甚至有在開發 for Palm 的版本 你永遠不知道你會遇到的平台,上面會有怎樣的 compiler 在某些老 UNIX 系統上,compiler 甚至不支援 ClassName* pointer = NULL; 這種寫法 你必須要寫 ClassName* pointer = (ClassName*)NULL; wx 的文件有提到這點 為了相容一些奇怪的 compiler,作為一個以「跨平台」為重點的 lib 勢必不能使用太多語言的進階功能,否則將會無法相容某些平台,或喪失潛在的可用平台 另外,一旦破壞了向下相容,將會導致長期使用 wx 的程式設計人員巨大的損失 所以這部份很難兼顧。 MFC 也是類似的情況,在他出生的年代還沒有 template 所以 MFC 才會用大量個 macro 實做自己的 template 和 RTTI,那完全是歷史因素。 不過話又說回來,我是認為 wx 有點因噎廢食,為了支援少數罕用系統 反而拖累了主流系統上的版本,使之難以有大幅進步。 -- 個人網頁: http://pcman.sayya.org/ 上面有自畫像及各種聯絡資訊 PCMan 全系列 BBS 連線軟體 http://pcman.ptt.cc/ http://pcmanx.csie.net/ 新酷音輸入法 for Windows http://chewing.csie.net/ IE Tab Firefox plugin/extension http://ietab.mozdev.org/ PCMan 油畫作品集:http://www.wretch.cc/album/album.php?id=pcman&book=1 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.52.231