我想重載加法運算符。我試圖實現的是,當item1 + item2
加在一起時,units_sold
的數量增加並增加了收入。在這個例子中,我假設ISBN是相同的條目。我沒有在下面的代碼中顯示檢查這個,但我在實際的代碼中這樣做。也就是說,ISBN不會添加,但在輸出中保持不變。C++:爲具有多個參數的變量重載加法運算符
問題代碼:
Sales_data Sales_data::operator + (const Sales_data & data1, const Sales_data
& data2) {
return Sales_data(data1.units_sold + data2.units_sold);
return Sales_data(data1.revenue + data2.revenue);
}
我不知道如果我不能同時採用兩種回報這樣,但不知道我怎麼會得到多增加了對Sales_data
變量的組成部分。這裏是一個完整的實施例示出了該問題:
#include <iostream>
#include <string>
struct Sales_data {
std:: string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};
// overload istream in order for cin to work
std::istream& operator >> (std::istream & in, Sales_data & cSales_data) {
in >> cSales_data.bookNo >> cSales_data.units_sold >> cSales_data.revenue;
return in;
}
// overload ostream in order for cout to work
std::ostream& operator << (std::ostream & out,
const Sales_data & cSales_data) {
out << cSales_data.bookNo << ", " << cSales_data.units_sold << ", "
<< cSales_data.revenue;
return out;
}
// addition operator rules
Sales_data Sales_data::operator + (const Sales_data & data1, const Sales_data
& data2) {
return Sales_data(data1.units_sold + data2.units_sold);
return Sales_data(data1.revenue + data2.revenue);
}
int main() {
Sales_data, item1, item2, total;
std::cin >> item1 >> item2 >> std::endl;
total = item1 + item2;
std::cout << total << std::endl;
}
我收到該錯誤消息是
error: ‘Sales_data Sales_data::operator+(const
Sales_data&, const Sales_data&)’ must take either zero or one argument
& data2) {
^
In function ‘int main(int, char**)’:
error: no match for ‘operator+’ (operand types are
‘Sales_data’ and ‘Sales_data’)
total = item1 + item2;
從消息,我試圖data1()
和data2()
其中我試圖重載加法運算,在同一段代碼中,我嘗試了const Sales_data()
,但似乎也沒有這樣做。
我也試過Sales_data & Sales_data::operator+
以及但是會產生相同的錯誤。
如何正確過載operator+
爲Sales_data
?
運算符+對兩個項目進行操作:'x + y'將'x'加到'y',併產生一個結果。如果您需要在結果中表示兩件事情,則需要返回包含您關心的兩個項目的單個項目(例如'struct')。 –
@JerryCoffin我不明白/知道我會如何完成或者我應該搜索哪些術語來查看相關示例。 – dustin