分享

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

 冒险的K 2021-10-09

出错信息:
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

最佳答案:

专家已采纳

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

文章来源:https://ask.csdn.net/questions/269058


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多