0

まず、これは学術的な目的のためです。私は非常にイライラしており、友人と半日もの間これを解決していました.

私たちはオーバーロードされた演算子とフレンド クラスの両方を扱っていますが、このラボでは完全にバカだと感じました。以下に重要なコードを掲載しますが、プロジェクト全体は投稿の下部にある 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

4

1 に答える 1