2015-04-03 108 views
0

這裏是操作功能(inSeconds的類型爲int)困惑運營商C++

const Time Time::operator +(const Time& t) const { 
    return Time(inSeconds_ + t.inSeconds_); 
} 

,但我還需要與這操作此代碼的工作。 (T1是時間的實例和12爲整數),而在順序調換值)

Time t(12 + t1); 

請幫幫我,對不起,如果這樣做毫無意義我是一個新手。

感謝

+0

請不要在他們收到很好的答案後貶低您的問題。 – 2015-04-03 17:40:04

回答

1
  1. 使函數全局函數,而不是一個成員函數。
  2. 將一個構造函數添加到Time需要int(表示秒)作爲參數。

下面的代碼對我的作品:

struct Time 
{ 
    Time(int sec) : inSeconds_(sec) {} 
    int inSeconds_; 
}; 

Time operator+(Time const& lhs, Time const& rhs) 
{ 
    return Time(lhs.inSeconds_ + rhs.inSeconds_); 
} 

int main() 
{ 
    Time t1(10); 
    Time t2(12 + t1); 
} 
+0

我想澄清一下,只有其中的一種得到了解,而不一定是兩者(從答案中可以看出,您不必同時做這兩件事)。爲了解釋OP,(2)將起作用,因爲一個參數構造函數(如果它沒有標記爲'explicit')將成爲從參數類型到類類型的轉換運算符,所以'Time(int)'將被隱式地用於將'int'值轉換爲'Time'對象。 – cdhowie 2015-04-03 15:50:59

+0

@cdhowie,使'運算符+'成員函數不能在g ++ 4.7.3中工作。 – 2015-04-03 15:53:37

+0

有趣的是,我應該說的無論如何是你*有*要做(2),但*可能*不必做(1)(但你應該反正)。 (1)沒有(2)沒有真正解決問題,除非你添加更多的重載。所以不理我。 :) – cdhowie 2015-04-03 16:21:36

0

你需要的是一個免費的功能操作。

struct Time { 
    // ... 
}; 

// note: outside the class 

Time operator+(const Time& left, const int& right) 
{ 
    return Time(/* whatever should go here */); 
} 

總是喜歡寫二進制運營商爲做他們的工作,對類的實用方法方面免費功能 - 你的生活會更容易。