2012-02-29 14 views
0

これはなぜ機能しませんか?私はint + Dateの+演算子を定義し、intを返すようにしようとしています。だから私は演算子+をDate + intを定義するメンバとして定義し、非メンバ関数の演算子+(int、Date)を定義するが、メインでそれを使うときにはその関数を使用していないようで、エラーが発生する非対称+演算子を定義する方法

class Date 
{ int D; 
    int M; 
    int Y; 
public: 
    Date(); 
    Date(int, int, int); 
    ~Date(void); 
    int getDay() const; 
    Date operator+(Date) const; 
    Date operator+(int) const; 
}; 

Date::Date() 
{ 
    D = 15; 
    Y = 2012; 
    M = 2; 
} 
Date::Date(int d, int m, int y) 
{ 
    D = d; 
    Y = y; 
    M = m; 
} 
Date::~Date(void) 
{ 
}  
int Date::getDay() const 
{ 
    return D; 
} 
Date Date::operator+(Date d) const 
{ 
    return Date(d.D+D,d.M+M,d.Y+Y); 
} 
Date Date::operator+(int d) const 
{ 
    return Date(d+D,M,Y); 
} 

int operator+(int i,Date d) // This is what is wrong apparently. 
{ 
    return i + d.getDay(); 
} 

int main() 
{ 
Date d = Date(); 
int i = 7 + d; // This is what generates the error at compile time. 
cout << i; 
return 0; 
} 
+2

..:

例とのリンクをご検討ください! – Anycorn

+2

それは私のためにコンパイルして正常に動作します:http://ideone.com/8Jbt8。 –

+0

私は非常にばかげているようです。私のコードでは、Dateクラスは別のファイルにあり、演算子+関数をヘッダファイルに含めるのを忘れていました...ここでは、同じコードで定義されていたので問題はありませんでした。 –

答えて

関連する問題