注册 登录
编程论坛 C++教室

错在哪里?谢谢

DG中专生 发布于 2007-12-05 22:19, 669 次点击
#ifndef B
#define B
#include<iostream>
#include<string>
class b{
public:
 std::istream& input(std::istream& in);
 std::ostream& output(std::ostream& out) const;
 double a() const;
 bool isbn(const b &rhs) const
 {
  return isbn==rhs.isbn;
 }
private:
 std::string isbn;
 unsigned units_sold;
 double revenue;
};
#endif
std::istream& b::input(std::istream& in)
{
 double price;
 in>>isbn>>units_sold>>price;
 if(in)
  revenue=units_sold*price;
 else{
  units_sold=0;
  revenue=0.0;
 }
 return in;
}
std::ostream& b::output(std::ostream& out) const
{
 out<<isbn<<"\t"<units_sold<<"\t"<<revenue<<"\t"<<a();
 return out;
}
double b::a() const
{
 if(units_sold)
  return revenue/units_sold;
 else
  return 0;
}
#include<iostream>
using namespace std;
int main()
{
 b item;
 cout<<"Enter"<<endl;
 while(item.input(cin))
 {
  cout<<item.output(cout);
  cout<<endl;
 }
 return 0;
}

请问错在哪里,还有,高手可以解释一下类定义中代码的意思吗,我不太明白,谢谢
4 回复
#2
DG中专生2007-12-05 22:56
刚机子卡了下,连续发了2个贴
#3
duccdd2007-12-05 23:40
bool [bold]isbn[/bold](const b &rhs) const
{
  return isbn==rhs.isbn;
}
private:
std::string[bold] isbn[/bold];

[bold]重定义isbn[/bold]

out<<isbn<<"\t" [bold]< [/bold]units_sold<<"\t"<<revenue<<"\t"<<a(); [bold]少了一个<
[/bold]
#4
rainyee2007-12-05 23:55
rep
把头文件与主文件分开,刚才测试了下,你的out<<isbn<<"\t"<units_sold<<"\t"<<revenue<<"\t"<<a();
中少了个<在units_sold前面,不是输出流了!
#5
rainyee2007-12-05 23:56
rep
我刚才忘了说isbn函数与私有数据重名了,重新定义一下吧
1