2013-06-24 50 views
0

正如你可以看到我想要7天,「天」添加類「MyAge」,但它給了我一個 錯誤:運算符重載:爲什麼此代碼不工作?

no matching function for call to MyAge::MyAge(int , int&, int&)

爲什麼發生這種情況? 雖然你回答了這個問題,但試着讓它更具特色。

對不起,我英語不好,我是印度人。這是我的代碼。

#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

您試圖調用3參數的構造函數,但您沒有。你可以添加它,或者像這樣更改operator +的執行:

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

謝謝你Angew。這解釋了一切:) –

相關問題