C++Primer第五版7.6习题

36行为什么报错:没有与这些操作数匹配的 ">>" 运算符。

vs2010下运行。

 #include <iostream>
#include <string>

using namespace std;
struct Sales_data
{
    string isbn() const {return bookNo;}
    Sales_data& combine(const Sales_data&);
    double avg_price() const;
    string bookNo;
    unsigned units_sold;
    double revenue;
};

Sales_data& Sales_data::combine(const Sales_data &rhs)
{
    units_sold +=rhs.units_sold;
    revenue +=rhs.revenue;
    return *this;
}

Sales_data add(const Sales_data &lhs,Sales_data &rhs)
{
    Sales_data sum= lhs;
    sum.combine(rhs);
}
ostream &print(ostream &os,const Sales_data& item)
{
    os << item.isbn() << " " << item.units_sold << " "
        <<item.revenue << " "<<item.avg_price();
    return os;
}
istream &read(istream &is,const Sales_data &item)
{
    double price=0;
    is >> item.bookNo >>item.units_sold >> price;// **没有与这些操作数匹配的 ">>" 运算符**

}

const 不应该添加在参数里,因为这个是istream,要修改值的!!!