看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《james732 (好人超)》之銘言: : 先感謝 littleshan 的回覆 : 我修改之後,還有一點小問題: : 我必須要明確寫出 allocator<T>,否則無法編譯 : 有沒有辦法讓我不要寫,而是讓 Compiler 自行推導出來呢? 可以節省打字 但自動推導似乎是做不到 因為目前 C++ 語法無從得知某個 template 的預設型別參數 你可以這樣寫看看 template <typename T = int, template<typename, typename = allocator<T> > class Cont = vector> class Stack { public: T top() { typename Cont<T>::iterator iter = cont.end(); return *(--iter); } private: Cont<T> cont; }; 注意 top() 裡面那個 typename 是不能省的 否則 compiler 會把 iterator 當作是 Cont<T> 裡面的一個 member variable -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.29.108 ※ 編輯: littleshan 來自: 140.112.29.108 (03/22 14:00)
james732:真的是獲益良多 大感謝 :) 03/22 14:12
tomap41017:這篇放入菁華區吧...超讚!! 03/22 16:01
cdm3201:哦哦~~~~~~~~大推 03/22 16:48
※ 編輯: littleshan 來自: 118.168.90.159 (03/22 20:17)