我有需要傳遞給它的兩個獨立的模板類:如何將多個模板傳遞到一類
template <typename T>
class AwesomeClass
{
TList *theList;
typename list <T>::iterator theiterator;
public:
template <typename TList>
AwesomeClass(TList &list)
{
theList = &list;
};
}
正如你可能知道它本質上提供的包裝爲STL(我必須這樣做這條路)。理想情況下,我不希望通過在對象的聲明像這樣通過兩個模板:
typedef AwesomeClass<int, BaseClass<int> > BaseClassIteratorInt;
以及與此寧願脫身:
typedef BaseClass<int> ListFromBaseClassInt;
typedef AwesomeClass<int> BaseClassIteratorInt;
BaseClassIteratorInt newInt(ListFromBaseClassInt)
(這是上面的代碼的意思做)
不過,我不斷收到錯誤:
error C2143: syntax error : missing ';' before '*'
對於變量從TList *的thelist。
我需要爲ctor提供TList的類型,有沒有辦法做到這一點?
額外步驟:
好吧,我現在有格式的代碼:
template <typename Container>
class AwesomeClass
{
public:
typedef typename std::common_type<Container> value_type;
bool firstUse;
Container *theList;
typename Container::iterator theIterator;
explicit AwesomeClass(Container &list):theList(&list)
{
};
}
這是使用common_type繞過編譯器故障而其停止生產線
typedef typename Container::value_type value_type;
編譯由於value_type不是全局名稱空間的一部分。
但我有一個編譯器錯誤的編譯器,編譯器聲稱它需要一個';'在它之前。
任何人都可以看到什麼是錯的?
ListIterator是實際的名稱,我一般會嘗試更改類名稱等當我張貼在論壇上,錯過了! – Stefan
我可以理解,如果名稱是專有的。但請保持一致。更不用提的是,在這種情況下,原始名稱是精心挑選的,因爲它可以自我記錄班級的工作。爲什麼讓我們難以理解您希望我們幫助您的代碼? – Angew
就這樣我得到了這個直 - 你的類存儲一個指向任意列表類型的指針,並將迭代器存入'std :: list'?你可能想要更好地解釋你的目的,因爲這一眼看不出來。 –
Angew