我正在使用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 */
我不知道我做错了什么。有人可以告诉我吗?! 谢谢!
答案 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
创建一个完整的单独类;你可以把操作符重载放在那个类中。