まず、これは学術的な目的のためです。私は非常にイライラしており、友人と半日もの間これを解決していました.
私たちはオーバーロードされた演算子とフレンド クラスの両方を扱っていますが、このラボでは完全にバカだと感じました。以下に重要なコードを掲載しますが、プロジェクト全体は投稿の下部にある 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 オブジェクトを Overtime クラス コンストラクターに渡そうとする私の試みは気に入らないようですが、私の理解では、残業オブジェクトは各 NumDays オブジェクトで構築されるため、このように動作するはずです。
2 番目の問題は、オーバーロードされた演算子に関するものです。私はこれに頭を悩ませることが少なくなり、なぜそれほど具体的に実装する必要があるのかという問題が増えました。
これは、オーバーロードされた演算子のコードです
/*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