??892 2016-07-12 10:39 采纳率: 100%
浏览 1187
已采纳

c++运行出错,我是敲的C++primer上的代码

出错信息:
Sales_data.obj : error LNK2019: 无法解析的外部符号 "class std::basic_istream > & __cdecl read(class std::basic_istream > &,struct Sales_data const &)" (?read@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV12@ABUSales_data@@@Z),该符号在函数 "public: __thiscall Sales_data::Sales_data(class std::basic_istream > &)" (??0Sales_data@@QAE@AAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z) 中被引用
1>E:\vs_proj\code_7.12\Debug\code_7.12.exe : fatal error LNK1120: 1 个无法解析的外部命令

主函数
#include
using std::cout;
using std::cerr;
using std::cin;
using std::endl;
#include "Sales_data.h"

int main(int argc, char* argv[])
{
/*Sales_data total;
if(read(cin,total)){
Sales_data trans;
while(read(cin,trans)){
if(total.isbn()==trans.isbn())
total.combine(trans);
else{
print(cout,total)<<endl;
total=trans;
}
}
print(cout,total)<<endl;
}else{
cerr<<"not data!"<<endl;
}*/
return 0;
}

其他函数
#include "Sales_data.h"
#include
using std::istream;
using std::ostream;

Sales_data::Sales_data (istream &is)
{
read(is,*this);
}
istream &read(istream &is,Sales_data &item)
{
double price = 0;
is>>item.bookNo>>item.units_sold>>price;
item.revenue = price * item.units_sold;
return is;
}

ostream &print(ostream &os , Sales_data &item)
{
os<<item.isbn()<<" "<<item.units_sold<<" "<<item.revenue<<" "<<item.avg_price();
return os;
}

Sales_data add( Sales_data &item1,const Sales_data &item2)
{
Sales_data sum;
item1.combine(item2);
sum=item1;
return sum;
}

double Sales_data::avg_price()
{
if(units_sold)
return revenue/units_sold;
else
return 0;
}

Sales_data& Sales_data::combine(const Sales_data &rhs)
{
units_sold+=rhs.units_sold;
revenue+=rhs.revenue;
return *this;
}

该函数的声明

#ifndef SALES_DATA_H
#define SALES_DATA_H
#include
#include
using std::istream;
using std::ostream;

using std::string;

struct Sales_data{
//构造函数
Sales_data():bookNo(""),units_sold(0),revenue(0){}
Sales_data (string &s):bookNo(s),units_sold(0),revenue(0){}
Sales_data (string &s,unsigned n,double p):
bookNo(s),units_sold(n),revenue(p*n){}
Sales_data (istream &);

//成员函数
std::string isbn() const{ return bookNo;}
Sales_data& combine(const Sales_data&);
double avg_price();

//成员变量
std::string bookNo;
unsigned units_sold  ;
double revenue ;

};
Sales_data add(const Sales_data&,const Sales_data&);
ostream &print(ostream &,const Sales_data &);
istream &read(istream&,const Sales_data&);
#endif

  • 写回答

1条回答 默认 最新

  • G皮T 云原生领域优质创作者 2016-07-12 10:41
    关注

    书籍的话大部分是伪码,可能还要修改一些部分,还有编译环境的问题都会影响运行。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?