我试图获得"总和+ = A"在我的代码中工作我正在学习编写运算符,但主要处理左侧的对象,因此总和是双重类型我不确定如何编写运算符以将sum的值与平衡变量相加银行对象并返回运算符中的总和。
我的主要是
double sum = 0;
Bank A("Tom", 500.50);
Bank B("Sam", 123.45);
sum += A;
sum += B;
cout << sum << endl;
在我的标题和实现文件中,我有
class Bank{
char name[31];
double balance;
public:
friend double operator+=(double, const Bank&);
};
double operator+=(double a, Bank& rhs) {
a += rhs.balance;
return a;
}
我在没有朋友的情况下尝试过使用它,但我不确定在使用赋值运算符时使用double值的正确语法。任何帮助都会得到帮助。
答案 0 :(得分:0)
你有几个问题。
首先 - 您的friend
声明和您的方法定义不匹配(您错过了const
)。这意味着方法定义不是朋友。
第二 - +=
运算符需要将其第一个参数作为引用,以便它可以更新它。它还应该返回一个参考。
所以你最终应该
...
friend double & operator+=(double &, const Bank&);
};
double & operator+=(double &a, const Bank& rhs) {
a += rhs.balance;
return a;
}
答案 1 :(得分:0)
在operator+=
的实现中,您正在更改变量的本地副本。它不会更改调用函数中的变量。你需要使用:
double& operator+=(double& a, const Bank& rhs) {
a += rhs.balance;
return a;
}
此外,您需要在Bank
中提供构造函数才能构造类的实例,如:
Bank(char const* n, double b) : balance(b)
{
std::strcpy(name, n);
}