作者littleshan (我要加入劍道社!)
看板C_and_CPP
標題Re: [問題] template stack
時間Mon Mar 22 14:00:14 2010
※ 引述《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)