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

时间:2013-06-24 07:51:54

标签: c++ overloading operator-keyword

正如您所看到的,我正在尝试将7天添加到“MyAge”类的“Days”,但它给了我 一个错误:

  

没有匹配函数来调用MyAge :: MyAge(int,int&,int&)

为什么会这样? 当你回答这个问题时,请尝试更具体的noob。

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

#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;
}

1 个答案:

答案 0 :(得分:1)

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

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