我有关于运算符重载的任务。我做了11/13,但是我坚持了最后2个(相似)。我有一个链表类,我已被分配到重载list1+(int i)
,我已经完成了。我还需要重载i+list1
,这是我遇到困难的地方,因为我还有cout<<
超载。我在stackoverflow中找到的例子引起了这个cout操作符的问题(我不知道为什么。)
SortedDoublyLinkedList SortedDoublyLinkedList::operator+(int i)
{
SortedDoublyLinkedList newlist(*this);
newlist.add(i);
return newlist;
}
这是列表+整数的部分,但我无法处理相反的情况,正如我所描述的那样。
答案 0 :(得分:2)
作为非会员功能(可能必须是朋友)。
SortedDoublyLinkedList operator+(int i, const SortedDoublyLinkedList& list)
{...}
您可能还想将现有的重写为:
SortedDoublyLinkedList operator+(const SortedDoublyLinkedList& list, int i)
{ ... }
您也可能想要另一个电话,或者更好的是,同时调用SortedDoublyLinkedList::Add()
方法。
答案 1 :(得分:1)
要实施i+list1
,您必须定义朋友非会员运营商,例如
class SortedDoublyLinkedList {
...
friend SortedDoublyLinkedList operator+(int i, const SortedDoublyLinkedList &_list);
};
SortedDoublyLinkedList operator+(int i, const SortedDoublyLinkedList &_list) {
SortedDoublyLinkedList newlist(_list);
newlist.add(i);
return newlist;
}