首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-07-01 
使用自己写的类,编译不过,新手求解~~~~~参照C++primer中第七章,写了一个类的头文件和类函数定义文件,编译

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

热点排行