2013-10-16 79 views
0

我已經實現了我自己的雙向鏈表,它具有模板化節點。通過這個節點,我已經存儲了我自己的對象(Play),它已經得到了槍支,並且爲我的列表創建了一個迭代器。使用get函數訪問存儲在節點中的數據

for(DLL<Play>::iterator itr=PlayList.begin(); itr!=PlayList.end(); itr++) 
       if(offense==*how do I access this*getoTeam()){ 

這是我的節點和迭代器代碼:

template<class T> 
class node{ 
    public: 
    T data; 
    node *next, *prev; 
    node(const T& t, node<T> *n = 0, node<T> *p = 0) {data=t; next=n; prev=p;} 
    node() {next = prev = 0;} 
}; 

template<typename T> 
class Iterator{ 
    public: 
     Iterator(node<T> *np=0) : nodePtr(np) {} 

     T& operator*() const {return nodePtr->data;} 

     Iterator<T> &operator++(){ 
      nodePtr = nodePtr->next; 
      return *this; 
     } 

     Iterator<T> operator++(int){ 
      Iterator<T> Temp(nodePtr); 
      nodePtr = nodePtr->next; 
      return Temp; 
     } 

     bool operator==(Iterator<T> i) { return nodePtr == i.nodePtr; } 
     bool operator!=(Iterator<T> i) { return nodePtr != i.nodePtr; } 

    private: 
     node<T> * nodePtr; 
}; 

我在爲我會把裏面我怎麼訪問此損失。如果你能解釋爲什麼,我會很感激。

謝謝。

而只是櫃面,這是我玩的對象:

#ifndef PLAY_H_INCLUDED 
#define PLAY_H_INCLUDED 
#include <string> 

class Play 
{ 
private: 
    int m_quarter; 
    int m_minutes; 
    std::string oTeam; 
    std::string dTeam; 
    int m_down; 
    int m_yardToGO; 
    int m_startLoc; 
    int playDesc; 
    std::string wholePlay; 
public: 
    int getQuarter(); 
    int getMinutes(); 
    std::string getoTeam(); 
    std::string getdTeam(); 
    int getDown(); 
    int getYard(); 
    int getStartLoc(); 
    int getPlayDesc(); 
    std::string getwholePlay(); 
    Play(int quarter, int minutes, std::string offense, std::string defense, int dwn, int ytg, int start, int desc, std::string play); 
    ~Play(); 
    Play parse(std::string toParse); 
    std::string findPlay(std::string playDesc); 
}; 

#endif // PLAY_H_INCLUDED 
+1

我不知道,如果這只是我,但我不太看你的實際問題是什麼。 – DogDog

+0

在我的第一個代碼框中的第二行,我想看看我已經保存爲進攻的任何東西是否與當前節點(這是我的getfunction的對象)存儲的進攻等價。基本上,我會插入什麼「*我如何訪問此*」以將其與進攻進行比較。 –

回答

1

假設itrIterator<Play>類型,使用offense == (*itr).getoTeam()

*itr致電Iterator<Play>::operator*()返回Play&,然後您可以致電getoTeam()。爲了保持一致性,你也應該實施

T* Iterator::operator->() {return &nodePtr->data;} 

通過這種方式,你可以使用更熟悉的符號offense == itr->getoTeam()

+0

阿哈,它編譯。這是朝着正確方向邁出的一步,謝謝。 –

相關問題