給定一個模板類:如何在C++中使用模板中定義的類型?
template<class T, class U>
struct myList {
typedef T head;
typedef U next;
};
class nullList {};
這有可能使類的列表,例如
myList<int, myList<string, myList<short, nullList> > >;
我想使用上面的列表來創建一個模板類,它只處理列表中的類。在上面的例子中,我的課程將處理整數,字符串和短褲(例如,將它們打印到控制檯)。
我一直在爲此苦苦掙扎,而且我還不確定從哪裏開始。與
template<class T, class U>
class myClass {
...
};
開頭的代碼失敗,因爲MyClass的只需要一個模板參數,那就是myList中即
myClass<myList>
但是,如果我嘗試使用
template<typename l>
class myClass {
l.head foo;// cannot refer to type member 'head' in 'myList<int, nullList>' with '.'
}
技術上myList.head應該是一個班級吧?我怎樣才能使用這些信息?
將您的模板重命名爲例如'mylist'以避免與'std :: list'發生衝突和混淆。請閱讀一本好的[C++編程](http://www.stroustrup.com/programming.html)書。 – 2014-09-27 06:10:10
你應該解釋爲什麼你認爲列表模板應該有兩個模板參數。我猜想它應該只有一個(列表元素內的數據類型)。或者你的名字'myList'令人困惑:你*不*處理任何列表。 – 2014-09-27 06:54:12
@BasileStarynkevitch因爲它是一個類型列表,而不是一個值列表。這種列表模板在模板元編程中很常見,我想這是目前正在教授的OP。 – sepp2k 2014-09-27 06:56:01