运算符重载:为什么此代码不起作用

Operator Overloading : Why This Code Is Not Working ?

本文关键字:代码 不起作用 为什么 重载 运算符      更新时间:2023-10-16

正如你所看到的,我试图将7天添加到类"MyAge"的"days"中,但它给了我一个错误:

调用MyAge::MyAge(int,int&,int&aamp;)时没有匹配的函数

为什么会发生这种情况?当你回答这个问题时,试着更具体一些。

抱歉我英语不好,我是印度人。这是我的密码。

#include<iostream>
using namespace std;
class MyAge
{
private:  
    int Days;
    int Months;
    int Years;
    int DaysToAdd;
public:
    void SetAge(int InputDays,int InputMonths,int InputYears)
    {
        Years= InputYears;
        Months=InputMonths;
        Days=InputDays;
    }
    MyAge operator + (int Add)
    {
        MyAge Blah (Days + Add,Months,Years);
        return Blah;
    }
    void Display()
    { 
        cout <<"Your age after increment is"<<Years<<"years"<<Months<<"Months"<<Days<<"Days";
    }
};
int main()
{
    MyAge BirthDay;
    BirthDay.SetAge(10,11,19);
    MyAge NameDay(BirthDay+7);
    NameDay.Display();
    return 0;
}

您试图调用一个3参数构造函数,但没有。您可以添加它,或者像这样更改operator +的实现:

MyAge operator + (int Add)
{
  MyAge Blah;
  Blah.SetAge(Days + Add, Months, Years);
  return Blah;
}