1

このコードが機能する理由がわかりませんが、2 つのオブジェクトを一緒に追加したい場合はどうすればよいか教えてください。お願いします。あなたが答えようとしている間、より初心者に具体的にしてください

英語が下手で申し訳ありません。私はインド人です。これが私のコードです。

#include<iostream>

using namespace std;

class time
{
private:
    int sec;
    int mint;
    int hours;
public:
    int Inputsec;
    int Inputmint;
    int Inputhours;
time(int Inputsec, int Inputmint, int Inputhours):sec(Inputsec), mint(Inputmint), hours(Inputhours){};
time operator+(time Inputobj)
{
    time blah (sec+Inputsec,mint+Inputmint,hours+Inputhours);
    return blah;
}

void DisplayCurrentTime()
{
    cout << "The Current Time Is"<<endl<< hours<<" hours"<<endl<<mint<<"minutes"<<endl<<sec<<"seconds"<<endl;
}
};

int main()
{
time now(11,13,3);
time after(13,31,11);
time then(now+after);
then.DisplayCurrentTime();
}

コードは正常に動作していますが、恐ろしい出力が得られます。私の間違いはどこですか?

4

4 に答える 4

0

あなたのエラーは、ユニット化されたパラメーターコンストラクターと同じ名前の publics メンバーです。これを試して :

#include <iostream>
using namespace std;

class time
{
private:
    int sec;
    int mint;
    int hours;
public:
time(int Inputsec, int Inputmint, int Inputhours):sec(Inputsec), mint(Inputmint), hours(Inputhours)
{
};

time operator+(time Inputobj)
{
    time blah (sec+Inputobj.sec, mint+Inputobj.mint, hours+Inputobj.hours);
    return blah;
}

void DisplayCurrentTime()
{
    cout << "The Current Time Is"<<endl<< hours<<" hours"<<endl<<mint<<"minutes"<<endl<<sec<<"seconds"<<endl;
}
};

int main()
{
time now(11,13,3);
time after(13,31,11);
time then(now+after);
then.DisplayCurrentTime();
}
于 2013-06-24T12:07:54.617 に答える
0

演算子のオーバーロード関数は、初期化されていない変数を使用しています。コンストラクターで変数を初期化inputsec, inputmint, Inputhoursします。

さらに、これを試してください:

time operator+ (time Inputobj)
{
   time blah (sec+Inputobj.sec, mint+Inputobj.mint, hours+Inputobj.hours);
   return blah;
}
于 2013-06-24T12:04:06.917 に答える