C_and_CPP 板


LINE

唔,還是講一下好了 ※ 引述《yoco315 (眠月)》之銘言: : 很簡單的繼承,Foo 繼承 Bar,沒有指明繼承的形式表示是 public 繼承。 ^^^^^^ 是 private 推文說了,建議修文 : ┌─────────────────────────── : │template < class T > : │class Foo : T : │{ : │ ... : │} ; : └─────────────────────────── : 看起來很玄,其實就是 Foo 繼承 T, : 不過這個 T 是個 template, 我會說 T 是個 class 而非 template, 就像上篇我在推文說的 理由出自 template template (or more template) parameter template < template <class> class T > class Foo; T 是什麼?不是 class, 是 template Foo<int> foo; // error, int is not template template <class T> class Bar; Foo<Bar> foo; // ok, Bar is template Bar<Bar> bar; // error, Bar is not class Bar< Bar<int> > // ok, Bar<int> is class 可以玩更複雜一點 template < template < template<class> class T > class U > class Test{}; template < template<class> class T > class Test2: private T<int>{}; // 寫 T 不行,因為不能繼承 template Test<Test2> test; // ok, Test2 is template template : Loki::Typelist 還有用到類似這樣的寫法 : ┌─────────────────────────── : │template < class T, class U > : │Foo : T < U > : │{ : │} : └─────────────────────────── 不對吧,Typelist 是這樣做的 template <class Head, class Tail> class Typelist{}; 然後是這樣串的 Typelist< int, Typelist<int, Typelist<int, Typelist<int, NullType> > > > 頭咬尾巴這樣 你說的東西後述 : 這可以用來實作 Typelist 技術。 ^^^^^^^^ 是 Tuple : ┌─────────────────────────── : │template < typenamep T > : │class Holder : │{ : │ private: T value_ ; : │ public: T & value() { return value_ ; } : │} ; : │ : │typedef TYPELIST_3 ( Array2D, Array2D, Array2D ) RGB_Typelist ; : │typedef TYPELIST_3 ( Array2D, Array2D, Array2D ) HSV_Typelist ; : │typedef TYPELIST_3 ( Array2D, Array2D, Array2D ) Lab_Typelist ; : │typedef TYPELIST_4 ( Array2D, Array2D, Array2D, Array2D ) YMCK_Typelist ; : │ : │typedef Loki::GenScatterHierarchy < RGB_Typelist , Holder > RGB_Image ; : │typedef Loki::GenScatterHierarchy < HSV_Typelist , Holder > HSV_Image ; : │typedef Loki::GenScatterHierarchy < Lab_Typelist , Holder > Lab_Image ; : │typedef Loki::GenScatterHierarchy < YMCK_Typelist, Holder > YMCK_Image ; : └─────────────────────────── 參考 Loki::Tuple, 你說的這個跟 Loki::Tuple 做法很接近(其實算一樣了) 而這裡的 Typelist 是用頭咬尾做的,GenScatterHierarchy 才是運用繼承技術 不過真正的實作法很複雜,這裡就不說明了…(其實是我還沒完全看懂 Orz) : RGB_Image img ; : Loki::Field<0>(img).value() = ... : Loki::Field<1>(img).value() = ... : Loki::Field<2>(img).value() = ... Loki 的 Tuple 的 holder 是這樣寫的 template <class T> struct TupleUnit { T value_; operator T&() { return value_; } operator const T&() const { return value_; } }; 所以用 Loki::Tuple 的話是這樣寫 RGB_Image img; Field<0>(img) = 255; Field<1>(img) = 255; Field<2>(img) = 255; Loki:: 可以省略,因為 Koenig Lookup... : 真是酷! : Loki::Typelist 會根據你給的 Typelist, : (就是一串型別,像是這樣 int, int, double, Foo, Bar ) : 使用遞迴繼承自己的方法, 這是 GenScatterHierarchy... GenScatterHierarchy 會依照 Typelist 裡面的型別依序繼承 Typelist 就只是型別串列而已 : 實作細節有興趣的話可以看 《Modern C++ Design》。 indeed... 不過看原始碼更快 http://sourceforge.net/projects/loki-lib 現在 0.14 了,裡面多一堆書上沒寫的東西 Sutter 的 Pimpl 也有(0.14 新增) ScopeGuard(0.13 新增) 還有一堆有興趣自己看吧… -- Nobody can take anything away from him. Nor can anyone give anything to him. What came from the sea, has returned to the sea. Chrono Cross --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.138.19.204 ※ 編輯: godfat 來自: 140.138.19.204 (04/18 14:32)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP