为链表C ++创建节点

时间:2014-09-25 22:08:14

标签: c++

我正在使用c ++实现链表。我在LinkedList.h中创建了一个struct Node,并尝试在节点中重载operator。但是当我编译时,我收到了这个错误 代码:

#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 */

我不知道我做错了什么。有人可以告诉我吗?! 谢谢!

3 个答案:

答案 0 :(得分:1)

虽然我会采用不同的方式,但问题是你没有在类中定义任何地方来保存Node结构。我不确定你是否在尝试这个:

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;
    }
};

答案 1 :(得分:0)

您将节点作为参考传递,因此您应该使用node.data

还删除了关键字typedef,因为它只会让您定义类型,而您的列表最终需要指向第一个节点的指针!

然后你必须将你的回报更新为:

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

答案 2 :(得分:0)

看起来你正试图访问不存在的东西。您的LinkedList实施没有名为data的变量。

最简单的解决方法是更改​​operator正文:

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

但是,我建议重构为Node创建一个完整的单独类;你可以把操作符重载放在那个类中。