2013-02-14 36 views
0

我的標題有點令人困惑,請讓我解釋一下。我已經寫了一個鏈接像模板類,以便它可以接受和類型的數據在c + +(我基本上重寫了std :: list但單個鏈表),但現在我試圖在我的列表模板中定義一個子類迭代器,我明白如何實現所有這些大部分,我的問題是關於適當的編碼風格。我明白模板我無法將我的課分成單獨的頭文件和源文件,好吧,所以我定義了這個類放了幾個函數模板,然後在下面寫了函數...很酷,但現在關於我的子類迭代器,我應該在哪裏編寫這些函數的代碼,不會太多,所以我應該只是在類中編寫它?或者我應該把它寫在我的列表類以外,但在同一個文件中?如果是的話,我該如何做到這一點會約會GenList :: Iterator :: next()的工作?或者它會是別的東西(GenList是我的鏈表類,next()是我爲Iterator寫的函數)?還是應該在GenList之外定義我的迭代器,但是在同一個頭文件中?如果不清楚,請詢問澄清任何部分使用類模板在類中編寫類時的正確風格

+0

C++ 11有一個單向鏈表,'std :: forward_list' – 2013-02-14 16:11:13

+1

我的老師還沒有覆蓋模板,但希望我們寫上帝知道有多少鏈接列表完全一樣,所以我想如果我的風格不正確,她會對她的分級感到噁心 – 2013-02-14 16:13:19

+0

我不允許使用預先寫好的清單,我必須自己寫清楚,否則就要完成=) – 2013-02-14 16:13:35

回答

0

風格問題是題外話,你使用它的編碼風格。如果你想在類定義之外的迭代器類型的成員函數那麼語法是:

template<typename T> 
    GenList<T>::Iterator 
    GenList<T>::Iterator::operator++(int) 
    { 
    Iterator tmp(*this); 
    // increment *this 
    return tmp; 
    } 

個人而言,我通常這樣定義的類定義內聯小成員函數。

是否有充分的理由調用迭代器Iterator而不是傳統的iterator

+1

「有一個很好的理由來調用迭代器迭代器而不是傳統的迭代器?「我認爲風格問題是無關緊要的! :-P – metal 2013-02-14 16:21:51

+0

與假定一個名爲'iterator'的嵌套類型的多年價值的現有通用代碼進行交互不是風格,而是代碼重用和互操作性 – 2013-02-14 16:29:20

+0

取決於您需要與之互操作的代碼庫,我想。 – metal 2013-02-15 13:28:29