我是按照参考书上的代码写的
class Sales_item {
friend std::istream& operator>>(std::istream&, Sales_item&);
friend std::ostream& operator<<(std::ostream&, const Sales_item&);
private:
std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};
std::istream&
operator>>(std::istream& in, Sales_item& s)
{
double price;
in >> s.bookNo >> s.units_sold >> price;
// check that the inputs succeeded
if (in)
s.revenue = s.units_sold * price;
else
s = Sales_item(); // input failed: reset object to default state
return in;
}
std::ostream&
operator<<(std::ostream& out, const Sales_item& s)
{
out << s.isbn() << " " << s.units_sold << " "
<< s.revenue << " " << s.avg_price();
return out;
}
然后下方是我自己的代码
struct Sales_data
{
string name="No Name";
double price=3 ;
int sales_volume = 7;
friend std::istream& operator>>(std::istream&,const Sales_data&);
friend std::ostream& operator<<(std::ostream&, const Sales_data&);
};
std::istream& operator>>(std::istream& in, Sales_data& s)
{
in >> s.name >> s.price >> s.sales_volume;
return in;
}
std::ostream& operator<<(std::ostream& out, const Sales_data& s)
{
out << s.name << " " << s.price << " "<< s.sales_volume;
return out;
}
但是提示没有与操作数匹配的“>>”和"<<"字符,price前面的字符出的提示,麻烦问下是哪里出问题了啊?
想实现的是按照顺序输入编号,价格和销量,之后可以调用进行运算等。
我看唯一的区别是上面用的std::string bookno,你用的string name
破案了,头文件不对………(被自己蠢哭)