使用自己写的类,编译不过,新手求解~~~~~
参照C++primer中第七章,写了一个类的头文件和类函数定义文件,编译类调用文件无反应,只是闪一下而已,我是在DEV-C++下编译的,实在搞不懂了,请大家帮忙看一下,谢谢~代码如下:
头文件定义:
//定义 Sales_item 的头文件
//**********预编译**********
#ifndef SALESITEM_H
#define SALEITEM_H
#include<iostream>
#include<string>
using namespace std;
//*************定义类**********
class Sales_item
{
public:
//函数外定义
istream& input(istream &in);
ostream& output(ostream &out) const;
double avg_price() const;
//函数内定义
bool same_isbn(const Sales_item &rhs) const
{
return isbn == rhs.isbn;
}
//默认构造函数
Sales_item::Sales_item(): units_sold(0),revenue(0.0) {}
private:
string isbn;
unsigned units_sold;
double revenue;
};
#endif
类函数定义:
//***********Sales_item 类函数定义实现部分***********************
#include "Sales_item.h"
using namespace std;
istream& Sales_item::input(istream &in)
{
double price;
in>>isbn>>units_sold>>price;
if(in)
revenue = units_sold * price;
else //读入失败进行复位
{
units_sold = 0;
revenue = 0;
}
return in;
}
ostream& Sales_item::output(ostream &out) const
{
out<<isbn<<"\t"<<units_sold<<"\t"
<<revenue<<"\t"<<avg_price();
return out;
}
double Sales_item::avg_price() const
{
if(units_sold)
return revenue/units_sold;
else
return 0;
}
类调用:
#include "Sales_item.h"
#include<iostream>
using namespace std;
int main()
{
Sales_item item;
cout<<"请输入一组交易:"<<endl;
while(item.input(cin))
{
cout<<"the transaction readed is : "<<endl;
item.output(cout);
cout<<endl;
}
getchar();
return 0;
}
[解决办法]
哦,知道了
#ifndef SALESITEM_H
#define SALEITEM_H
这个你抄错了
#ifndef SALESITEM_H
#define SALESITEM_H
[解决办法]
//默认构造函数
Sales_item::Sales_item(): units_sold(0),revenue(0.0) {}
你这么写肯定编译不过。把Sales_item::这个作用域除掉。或者在cpp中编写构造函数。
[解决办法]
class Sales_item{
//你还真实勤快呀,类内函数定义也要这样写,那本书上,还是那个老师教的!!!有这个必要么????
Sales_item::Sales_item(): units_sold(0),revenue(0.0) {};
};
[解决办法]
程序本身没问题,
#ifndef SALESITEM_H
#define SALEITEM_H
这里没试验,应该是这里吧,3楼已经指出了。
应该可以解决了吧!
不过这个类内定义的,构造函数,不必这样写
Sales_item::Sales_item(): units_sold(0),revenue(0.0) {};
写成这样,简洁省事多好呀!!!
Sales_item(): units_sold(0),revenue(0.0) {};