2014-09-25 97 views
-1

我正在使用C++實現鏈表。我在LinkedList.h中創建了一個struct Node,並嘗試在節點中重載運算符。但是,當我編譯,我得到這個錯誤 代碼:爲鏈表創建節點C++

#ifndef LINKEDLIST_H 
#define LINKEDLIST_H 

class LinkedList{ 
typedef struct Node{ 
    int data; 
    Node* next; 
} * nodePtr; 

//Returns true if the current Node object value is 
//less than the parameter Node object value 
bool operator < (const Node& node) const { 
    return this->data < node->data;   <--- Unable to resolve identifier data. 
}; 
#endif /* LINKEDLIST_H */ 

我不知道我做錯了什麼。有人能告訴我嗎?! 謝謝!

回答

0

您傳遞節點作爲參考,所以你應該使用node.data

刪除也關鍵字typedef,因爲它使你只定義類型和你的清單明確需要一個指向第一個節點!

然後,你必須更新你的回報:

return this->nodePtr->data < node.data; 
+0

我改變它爲node.data,但直到有同樣的問題。我想將此節點的數據與傳入的節點的數據節點進行比較。 – Jnk 2014-09-25 22:17:47

0

它看起來像你想訪問的東西不存在。您的LinkedList實現沒有名爲data的變量。

最簡單的解決方法是改變你的身體operator

return this->nodePtr->data < node->data; 

不過,我建議重構有一個完整的獨立的類Node;你可以把操作符重載放在那個類中。

+0

return this-> nodePtr-> data < node-> data;我試過這個,但仍然有同樣的問題 – Jnk 2014-09-25 22:18:12

1

儘管我會這樣做,但問題在於,您沒有在類中定義任何位置來容納節點結構。我不知道你是否試圖這樣做:

class LinkedList{ 
    typedef struct Node{ 
     int data; 
     Node* next; 
    } * nodePtr; 

    Node node; // Added this 

    //Returns true if the current Node object value is 
    //less than the parameter Node object value 
    bool operator < (const Node& node) const { 
     return this->node.data < node.data; 
    } 
};