【发布时间】:2021-04-24 11:51:59
【问题描述】:
目前正在学习 C++。我遇到了一个问题,我重载了运算符并包含了一个默认构造函数,但是,VSC 一直说我没有包含一个。我已经将我的代码与我发现的类似代码进行了比较,并且语法非常相似,但我仍然无法运行它。想知道我是否可能有疏忽等。
class DegreeAngle
{
private:
int angle;
public:
DegreeAngle(){angle = 0;}
DegreeAngle(const int angleInput) : angle(angleInput){}
friend int operator+(const DegreeAngle& angleOne, const DegreeAngle& angleTwo);
friend int operator-(const DegreeAngle& angleOne, const DegreeAngle& angleTwo);
friend std::istream& operator >>(std::istream& ins, const DegreeAngle& angle);
friend std::ostream& operator <<(std::ostream& outs, const DegreeAngle& angle);
};
int main()
{
DegreeAngle a1;
std::cin >> a1;
std::cout << a1;
}
int operator+(const DegreeAngle& angleOne, const DegreeAngle& angleTwo)
{
DegreeAngle sumAngle = angleOne.angle + angleTwo.angle;
return sumAngle.angle;
}
int operator-(const DegreeAngle& angleOne, const DegreeAngle& angleTwo)
{
DegreeAngle subAngle = angleOne.angle - angleTwo.angle;
assert(subAngle.angle>=0);
return subAngle.angle;
}
std::istream& operator >>(std::istream& ins, const DegreeAngle& angleInput)
{
ins >> angleInput.angle;
return ins;
}
std::ostream& operator <<(std::ostream& outs, const DegreeAngle& angleInput)
{
outs << angleInput.angle;
return outs;
}
【问题讨论】:
-
请编辑您的问题并显示 exact 错误消息。我可以看到的一个问题是您的
operator>>函数正在尝试修改const DegreeAngle&对象。这是不允许的。该参数应该是非常量。
标签: c++ operator-overloading friend-function