私はオペレーター operloading の概念に非常に慣れておらず、以前に尋ねられた関連する質問は私よりもはるかに先を行っていたので、基本的な質問をする必要があります。
.h ファイルは次のとおりです。
#define ACCOUNT_H
using namespace std;
class Account{
friend Account &operator+ (Account &acc);
friend ostream &operator<< (ostream &, Account &);
public:
Account(double=100.0,double=0.0,double=0.0);
Account &returnSum(Account &otherAccount) const;
Account& operator+=(Account &Acc1);
void setT(double);
void setD(double);
void setE(double);
double getT(void);
double getD(void);
double getE(void);
void printAccount();
private:
double t;
double d;
double e;
};
#endif
+
「単一の引数を持つ」グローバル関数としてオーバーロードする必要があります (これはここで私にとって挑戦的な部分でした) および+=
メンバー関数として (ここでは、メンバー関数であるため、右側のオペランドを取ることができないと仮定します。が問題の部分でした)。これが私の実装です+=
:
Account &Account ::operator+=(Account &Acc1){
Account *result = new Account(Acc1.getT()+t,Acc1.getD()+d,Acc1.getE()+e);
Acc1 = *result;
return *this;
}
+=
これを修正して、オーバーロードの実装を書いていただければ幸いです+
。t、d、e の値を Account オブジェクトとして追加するだけです。