我是菜鸟,当我在做Leetcode 21. Merge Two Sorted Lists我提交了这段代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
p1 = list1;
p2 = list2;
while (p1 && p2) {
if (p1->val val) {
p->next = p1;
p1 = p1->next;
} else if (p2->val val) {
p->next = p2;
p2 = p2->next;
}
p = p->next;
}
if (!p1) {
p->next = p2;
}
if (!p2) {
p->next = p1;
}
return head->next;
}
private:
ListNode* p1, p2;
ListNode* head = new ListNode(-101);
ListNode* p = head;
};
但出现编译错误:
error: no viable overloaded '='
p2 = list2;
~~ ^ ~~~~~
还有:
this->p1 = list1;
this->p2 = list2;
得到同样的错误信息。但是在我将错误代码(在mergeTwoLists()函数内)修改为:
ListNode* p1 = list1;
ListNode* p2 = list2;
代码可以通过测试用例,没有出现错误。
Q1:我想知道为什么要为这样的指针赋值实现operator “=”(p1或p2是ListNode*类型和list1和list2也是ListNode*类型) 问题。
Q2:也有人可以根据错误信息告诉我如何实现operator “=”(可以通过测试用例)吗?
Q3:或者如果有其他解决方案(除了我上面的修改并实现operator=)这个编译错误消息(可以通过测试用例)。
谢谢!
© 版权声明
本站下载的源码均来自公开网络收集转发二次开发而来,
若侵犯了您的合法权益,请来信通知我们1413333033@qq.com,
我们会及时删除,给您带来的不便,我们深表歉意。
下载用户仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,访问及下载者下载默认同意本站声明的免责申明,请合理使用切勿商用。
THE END
暂无评论内容