struct Sales_data {
string bookNo; // ISBN number
unsigned sold = 0; // total sold
double revenue = 0.0; // total revenue
string isbn() const { return bookNo; } // inline member function
Sales_data& combine(const Sales_data&); // +=
double avg_price() const;
};
istream &read(istream&, const Sales_data&);
ostream &print(ostream&, const Sales_data&);
Sales_data add(const Sales_data&, const Sales_data&);
ostream& print(ostream& os, Sales_data& item)
{
os << "ISBN: " << item.isbn() << " Sold: " << item.sold << " Revenue: " << item.revenue
<< " Average Price: " << item.avg_price() << "\n";
return os;
}
Sales_data add(const Sales_data& lhs, const Sales_data& rhs)
{
Sales_data sum = lhs;
sum.combine(rhs);
return sum;
}
int main()
{
Sales_data book1, book2, temp1;
read(cin, book1);
read(cin, book2);
print(cout, add(book1, book2)); // 报错
temp1 = add(book1, book2);
print(cout, temp1); // 成功
}
错误提示是:
无法解析的外部符号 "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl print(class std::basic_ostream<char,struct std::char_traits<char> > &,struct Sales_data const &)" (?print@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV12@ABUSales_data@@@Z)
完全不知道错在哪。。。
combine
和avg_price
只声明了,没有定义.ostream& print(ostream& os, Sales_data& item)
定义为ostream& print(ostream& os, const Sales_data& item)
, 少了个const
.