读书人

施用自己写的类编译不过新手求解~

发布时间: 2013-07-01 12:33:04 作者: rapoo

使用自己写的类,编译不过,新手求解~~~~~
参照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) {};

读书人网 >C++

热点推荐