Hi, I have a class of some objects. The class is
But, This doesnt compile and gives error at line 27. Says, objects are private with respect to that context. but there is nothing there..Code:#ifndef SALES_DATA_H_INCLUDED
#define SALES_DATA_H_INCLUDED
#include <string>
#include <iostream>
using namespace std;
class Sales_data{
friend ostream &print(ostream&,const Sales_data&);
friend istream &read(istream&,Sales_data&);
public:
Sales_data &combine(const Sales_data&);
Sales_data()=default;
Sales_data(istream &is)
{
double price = 0;
is >> (*this).bookNo >> (*this).units_sold >> price;
(*this).revenue = price * (*this).units_sold;
};
string isbn() const {return bookNo;}
double avg_price() const {return units_sold?revenue/units_sold:0;}
private:
std::string bookNo;
unsigned units_sold;
double revenue;
};
Sales_data add(const Sales_data &lhs,const Sales_data &rhs)
{
Sales_data sum=lhs;
sum.combine(rhs);
return sum;
}
ostream &print(ostream &os,const Sales_data &item)
{
os<<item.isbn()<<" was sold "<<item.units_sold<<" copies at total tk "<<item.revenue
<<" and the average price is "<<item.avg_price()<<endl;
return os;
}
//input function
istream &read(istream &is, Sales_data &item)
{
double price = 0;
is >> item.bookNo >> item.units_sold >> price;
item.revenue = price * item.units_sold;
return is;
}
Sales_data& Sales_data::combine(const Sales_data &rhs)
{
units_sold+=rhs.units_sold;
revenue+=rhs.revenue;
return *this;
}
#endif // SALES_DATA_H_INCLUDED