运算符在c ++中使用整数和对象进行重载

时间:2014-08-04 21:27:21

标签: c++ operator-overloading

我有关于运算符重载的任务。我做了11/13,但是我坚持了最后2个(相似)。我有一个链表类,我已被分配到重载list1+(int i),我已经完成了。我还需要重载i+list1,这是我遇到困难的地方,因为我还有cout<< 超载。我在stackoverflow中找到的例子引起了这个cout操作符的问题(我不知道为什么。)

SortedDoublyLinkedList SortedDoublyLinkedList::operator+(int i)
{
    SortedDoublyLinkedList newlist(*this);
    newlist.add(i);
    return newlist;

}

这是列表+整数的部分,但我无法处理相反的情况,正如我所描述的那样。

2 个答案:

答案 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;
}