为linkedlist C和x2B创建节点+; 我正在用C++实现链表。我在LinkedList.h中创建了一个结构节点,并尝试在节点中重载运算符。但是当我编译时,我得到了这个错误 代码: \ifndef LINKEDLIST\u H #定义链接列表 类链接列表{ 类型定义结构节点{ int数据; 节点*下一步; }*nodePtr; //如果当前节点对象值为,则返回true //小于参数节点对象值 布尔运算符数据data;
您将节点作为引用传递,因此应该使用为linkedlist C和x2B创建节点+; 我正在用C++实现链表。我在LinkedList.h中创建了一个结构节点,并尝试在节点中重载运算符。但是当我编译时,我得到了这个错误 代码: \ifndef LINKEDLIST\u H #定义链接列表 类链接列表{ 类型定义结构节点{ int数据; 节点*下一步; }*nodePtr; //如果当前节点对象值为,则返回true //小于参数节点对象值 布尔运算符数据data;,c++,C++,您将节点作为引用传递,因此应该使用node.data 还要删除关键字typedef,因为它只会让您定义类型,而且您的列表肯定需要指向第一个节点的指针 然后,您必须将您的报税表更新为: return this->nodePtr->data < node.data; 返回此->nodePtr->datanodePtr->datadata; 但是,我建议重构,为节点创建一个完全独立的类;您可以将运算符重载放在该类中。尽管我会以不同的方式执行此操作,但问题是您没有在类中定义任
node.data
还要删除关键字typedef
,因为它只会让您定义类型,而且您的列表肯定需要指向第一个节点的指针
然后,您必须将您的报税表更新为:
return this->nodePtr->data < node.data;
返回此->nodePtr->data
您似乎试图访问不存在的内容。您的LinkedList
实现没有名为data
的变量
最简单的修复方法是更改操作符
主体:
return this->nodePtr->data < node->data;
返回此->nodePtr->datadata;
但是,我建议重构,为
节点
创建一个完全独立的类;您可以将运算符重载放在该类中。尽管我会以不同的方式执行此操作,但问题是您没有在类中定义任何位置来保存节点结构。我不确定您是否正在尝试此操作:
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;
}
};
类链接列表{
类型定义结构节点{
int数据;
节点*下一步;
}*nodePtr;
Node;//添加了这个
//如果当前节点对象值为,则返回true
//小于参数节点对象值
布尔运算符<(常量节点和节点)常量{
返回此->node.data
我将其更改为node.data,但仍然存在相同的问题。我想将此节点的数据与传入的节点的数据节点进行比较。返回此->nodePtr->dataclass 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;
}
};