首先,這是爲了學術目的。我非常沮喪,而且我甚至一直在和一位朋友一起工作半天。朋友課程和重載的操作員
我們正在與重載的操作員和朋友班一起工作,這個實驗讓我覺得自己像個白癡。我將在下面發佈重要代碼,但整個項目將在帖子底部的zip文件中。我相信它充滿了錯誤,它現在拒絕保存我的一些代碼(它一直拋出異常)。
這是我的主要類的頭文件代碼
class NumDays
{
private:
int hours;
double days;
void calcDays(int);
public:
NumDays (int);
void setHours (int);
double getWork();
NumDays operator+ (const NumDays &);
NumDays operator- (const NumDays &);
NumDays operator++();
void operator<< (const NumDays &);
friend class Overtime(const NumDays &);
};
它似乎不喜歡我試圖在NUMDAYS傳遞對象進入加時賽類的構造函數,但是從我的理解,這是怎麼了它應該工作,因爲加班對象是與每個NumDays對象構建的
第二個問題是對於重載的操作符,我在解決這個問題時遇到了更少的麻煩,以及爲什麼必須特別實現它。
這是重載運算
/*overloading the + operator***************************************************/
NumDays NumDays::operator+ (const NumDays &right)
{
NumDays temp;
temp.hours = hours + right.hours;
return temp;
}
/*overloading the -operator***************************************************/
NumDays NumDays::operator- (const NumDays &right)
{
NumDays temp;
temp.hours = hours - right.hours;
return temp;
}
/*overloading the ++ operator**************************************************/
NumDays NumDays::operator++()
{
++hours;
return *this;
}
/*overloading the << operator**************************************************/
void NumDays::operator<< (const NumDays &objOput)
{
cout << objOput.getWork << " days have been worked by this work";
}
代碼這絕對不是< <超載的粉絲,但我基本上是複製的代碼直接從我的書,試圖做到這一點。
原始代碼鏈接被破壞,這是一個永久鏈接。 http://www.mediafire.com/file/j4q3fln9a8p98ll/dayCounter.zip
也稍微修復了我的代碼。不完美的工作,但它編譯和主要是工作。 http://www.mediafire.com/file/g5m21drbuab8tso/Lab5workCounter.zip
'cout << objOput.getWork <<「天已被這個工作工作過了;'''''objOput.getWork'是一個函數。查看該行的任何內容是否有誤,如缺少括號? – PaulMcKenzie
這不是一個'friend'聲明是如何工作的(既不是語法也不是wrt。語義),你不需要它。 –
同意@ Cheersandhth.-Alf。再看看['朋友'聲明](http://en.cppreference.com/w/cpp/language/friend)。 –