c++链表倒序时 遇到=重载问题了,大侠救我!!!

来源:百度知道 编辑:UC知道 时间:2024/05/19 15:47:44
void List::Rever(Node *head)
{
Node *p,pnow,q;
p=head->next;
if(p==NULL) return;
pnow = NULL;

while(p->next)
{
q=p->next;
p->next=pnow;
pnow=p;
p=q;
}
p->next=pnow;
head->next=p;
}
编译器提示
no operator defined which takes a right-hand operand of type 'class Node *' (or there is no acceptable conversion)
于是我编写了
Node& List::operator=(const Node &b)
{
next=b->next;
return *this;
} (node是链表的节点类,我是把node和list两个类分开的)
但问题依然不变!!
忘说了,编译给每一行指针赋值都报同样的错误~另外,我感觉Node *p,pnow,q作为指针之间赋值好像没见过要重载赋值的,因为仅仅是指向关系嘛~但系统还是报错了~请大侠指点一下此处是重载成员运算符还是应该重载友员运算符?还是都可以?否则有什么区别?

靠,你基本功太差了啊,大哥。

Node *p,pnow,q;
p是NODE类型指针, pnow,q是NODE对象啊,你怎么能这样写呢:
pnow=p ; 指针赋值给类对象,不匹配。
p=q; 类对象赋值给指针。 两边不匹配,编译器当然提示了

这样改就可以了:
Node *p,*pnow,*q;

no operator defined which takes a right-hand operand of type 'class Node *' (or there is no acceptable conversion)

你应该这样做
Node& Node::operator=(const Node &b)
而不是用List 不过没看到你其他代码,无法知道问题所在,应该和赋值操作无关,我认为是其他地方有错