2013-04-11 73 views
0

在我的C++程序中,我有自己的自定義映射組成的自定義節點,其中我試圖獲取「第一個」和「第二個「值(如std :: map)。我嘗試了許多不同的語法,但無濟於事。請求在「...」中的成員「...」是非類類型的「...」

我知道這個問題的常見修復方法是用替換(*key_Iterator)->first,但在這種情況下,我需要能夠訪問第一個方法中的值。

我在迭代器類中添加了變量,但程序沒有識別它們。

template <class T, class P> 
class Iterator { 
    public: 
    Node<T,P>* operator*() { return ptr_; } 
    private: 
    Node<T,P>* ptr_; 
    T first; 
    P second; 
} 

有關如何正確實施第一個版本和消除此錯誤的任何建議將不勝感激。

+2

呃,你從'符*返回一個指針',所以當然你必須在返回值上使用' - >'語法...... – nneonneo 2013-04-11 22:05:25

+1

(另外,它根本不清楚你實際要求的是什麼「在第一個方法中訪問值」?什麼是「第一個方法」?什麼值?) – nneonneo 2013-04-11 22:07:13

+0

我自然發現 - >語法更有意義。但有了這個程序指導方針,我用(* itr).first提取了第一個值,我不知道爲什麼這個語法不起作用。 – 2013-04-11 22:07:51

回答

3

(從評論移動)解決方案是從您的operator *返回參考,就像這樣:

Node<T,P> &operator *() { return *ptr_; } 
相關問題