友元和重载的问题

jhldelphi jhldelphi 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include "stdafx.h"
//#include "..\..\comm\Sales_item.h"

#include <iostream>
#include <string>
using namespace std;

class Sales_item
{
friend istream& operator>>(istream &in, Sales_item &s);
public:
Sales_item(): units_sold(0), revenue(0.0) {}
Sales_item(const string &book):isbn(book), units_sold(0), revenue(0.0){}

public:
Sales_item& operator+=(const Sales_item &);

public:
double avg_price() const;
inline bool same_isbn(const Sales_item &rhs) const { return isbn == rhs.isbn;}

private:
string isbn;
unsigned units_sold;
double revenue;
};

istream& operator>>(istream &in, Sales_item &s)
{
double price;
in >> s.isbn >> s.units_sold >> price;
if(in)
{
s.revenue = s.units_sold * price;
}
else
{
s = Sales_item();
}

return in;
}

inline Sales_item& Sales_item::operator+=(const Sales_item &rhs)
{
units_sold += rhs.units_sold;
revenue += rhs.revenue;
return *this;
}

inline double Sales_item::avg_price() const
{
if(units_sold)
{
return revenue / units_sold;
}
else
{
return 0;
}
}

int main(int argc, char* argv[])
{

Sales_item book;

/*
cout << "Enter transactions: " << endl;
while(cin >> book)
{
cout << "ISBN, number of copies sold, "
<< "total revenue, and average price are: "
<< endl;
cout << book << endl;
}
*/
return 0;
}


error C2248: 'isbn' : cannot access private member declared in class 'Sales_item'
error C2248: 'units_sold' : cannot access private member declared in class 'Sales_item'
error C2248: 'revenue' : cannot access private member declared in class 'Sales_item'
...全文

相关推荐

评论 10
收藏 已收藏
分享
返回顶部
jhldelphi
C++ 语言 65,214 成员 250,514 内容