我正在尝试从实验室中解决以下问题:
定义一个名为Repository的类,该类具有2个整数私有变量。 > class包含一个空的构造函数,另一个包含2个参数。显示类的值的> accesor方法也包含在> class中。编写另一个称为数学的课程,该课程是第一个课程的朋友。此类包含应用于存储在第一类中的值的基本算术>运算(+,-,*,/)的实现。每个>算术方法都接收一个从> first类实例化的对象作为参数。
我已经在整个互联网上搜索了两个小时,但是我没有发现任何关于将另一个类的运算符重载的信息。我了解重载机制,使用朋友功能解决了问题,但我仍然在问自己是否可以如上所述进行操作,如果可以,我希望知道如何执行。预先感谢!
我已经尝试过提到的here
解决方案//friend Repository operator + (Repository &, Repository &);
friend Mathematics;
};
/*
Repository operator + (Repository &rep1, Repository &rep2)
{
Repository obToRet;
obToRet.val1 = rep1.val1 + rep2.val1;
obToRet.val2 = rep1.val2 + rep2.val2;
return obToRet;
}*/
class Mathematics
{
public:
friend Repository;
public static Repository operator+(Repository &rep1, Repository &rep2)
{
Repository objtoret;
objtoret.val1 = rep1.val1 + rep2.val1;
objtoret.val2 = rep1.val2 + rep2.val2;
return objtoret;
}
};
答案 0 :(得分:0)
所要求的只是执行算术运算。不是您必须使它们超载:
>>> s = defaultdict(lambda a=[0]: a.__setitem__(0, a[0] + 1) or a[0])
>>> s[6]
1
>>> s[9]
2
>>> s[6]
1
>>> s[8]
3