初学C++看到书本上说可以istream为构造函数,可是代码打上去有不是那么回事了。
这是我在书上打的一个关于整理书店书籍销售的类:
struct Sales_data
{
string bookNo;//书名
unsigned unit_sold;//销售总数
double revenue;//总价
//构造函数
Sales_data(iostream& is)
{
read(is,*this);//read函数的作用是从is中读取一条交易信息
//然后存入this对象中
}
string isbn()const//返回书名号
{
return bookNo;
}
Sales_data& combine(const Sales_data&);//将相同书名号的类对象的销售总额相加
double average()const;//计算这本书的平均售价
};
//read的定义
istream &read(istream &is,Sales_data &item)
{
double price=0;
is>>item.bookNo>>item.unit_sold>>price;//分别输入书名号,书的销售总数和单价
item.revenue=price*item.unit_sold;
return is;
}
然后我在main 函数里面创建一个对象的时候是这样创建的
Sales_data book(cin);
然后编译器就说我没有相应的构造函数,哎呀╮(╯▽╰)╭就是书上没说当构造函数以istream为参数的时候怎么创建对象,明明写了构造函数,可是编译器老说没有对应的构造函数。请各位前辈有空帮帮忙,万分感谢