×××××sales_data通过类型转换形成的临时对象不能转换成sales_data (非常量引用)
文件 sales_data.h
#include <iostream>
#include <string>
using namespace std;
struct sales_data{
public:sales_data(); sales_data(const std::string &s,unsigned n,double p); sales_data(std::string &s);sales_data(istream &is);friend istream &read(istream &is,sales_data &s);friend ostream &print(ostream &os,sales_data &s);string isbn()const;sales_data &combine(sales_data &);double avg_price()const;ostream & dis(ostream & os)const;
private:std::string bookno;unsigned sales_cnt ;double revenue ;};
文件 function.cc
#include <iostream>
#include <string>
#include "sales_data.h"
using namespace std;
sales_data::sales_data():bookno(""),sales_cnt(0),revenue(0.0){cout << "call sales_data() " << endl;}
sales_data::sales_data(const std::string &s,unsigned n,double p):bookno(s),sales_cnt(n),revenue(n * p)
{cout << "call sales_data(std::string &s,unsigned n,double p) " << endl;}
sales_data::sales_data(std::string &s):sales_data(s,0,0){cout << "call 3" <<endl;}
sales_data::sales_data(istream & is):sales_data(){read(is,*this);cout << "call 4;" << endl;}istream &read(istream &is,sales_data &s){double price;cout << "Enter BookNumber/Sales counts/Price: ";is >> s.bookno >> s.sales_cnt >> price;s.revenue = price * s.sales_cnt;return is;
}
ostream &print(ostream &os,sales_data &s){os << "\n BookNumber: " << s.bookno;os <<"\n Sales counts: " << s.sales_cnt;os << "\n Sales revenue: " << s.revenue << endl;
}
//sales_data &add(sales_data &l,sales_data r){
// combine(l,r);
// return l;
//}
string sales_data::isbn()const{return bookno;
}
sales_data & sales_data::combine(sales_data& s){if(sales_data::bookno != s.isbn()){cout << "WRONG!!! Their isbns are not equal!!!" <<endl;}else{sales_cnt += s.sales_cnt;revenue += s.revenue;}return *this;
}double sales_data::avg_price()const{if (sales_cnt == 0)return 0;else{return revenue/sales_cnt;}}
ostream & sales_data::dis(ostream &os)const{cout << "Book Number: " << bookno <<endl;cout << "Revenue: " << revenue <<endl;cout << "Sales counts: "<< sales_cnt << endl;return os;
}sales_data & add(sales_data &l,sales_data &r){l.combine(r);return l;
}
文件 main.cc
#include <iostream>
#include <string>
#include "sales_data.h"
using namespace std;
int main()
{sales_data i;string s("12345");i.combine(s); //立刻会报错print(cout,i);return 0;
}
g++编译器如下结果:
r@r-Sys:~/7.5.4/ex/2$ g++ function.cc main.cc -o 123
main.cc: In function ‘int main()’:
main.cc:9:14: error: cannot bind non-const lvalue reference of type ‘sales_data&’ to an rvalue of type ‘sales_data’i.combine(s);
这里错误原因是,main.cc中 s是一个string对象,执行 i.combine(s)时候,s通过转换构造函数隐式类型转换为临时量sales_data,但是这个临时量不能够转换为 combine的参数类型 sales_data &
×××××sales_data通过类型转换形成的临时对象不能转换成sales_data (非常量引用)相关推荐
- 把json对象串转换成map对象
2019独角兽企业重金招聘Python工程师标准>>> /** * nc只支持简单的 * 把json对象串转换成map对象 * @param jsonObjStr e ...
- 如何将PHP对象数组转换成普通数组
/** * 对象数组转为普通数组 * * AJAX提交到后台的JSON字串经decode解码后为一个对象数组, * 为此必须转为普通数组后才能进行后续处理, * 此函数支持多维数组处理. * * @p ...
- java object 转byte_Java将对象Object转换成Byte字节数组
Java将对象Object转换成Byte字节数组的代码如下: /** * @from www.ityuan.com * @Description: Java将对象Object转换成Byte字节数组 * ...
- CAD中如何将图形对象快速转换成三维曲面?
上节CAD三维绘图教程小编给大家分享了浩辰CAD软件中将图形对象转换为三维实体的操作技巧,你学会了吗?今天小编将接着上节内容给大家分享浩辰CAD软件中将图形对象快速转换成三维曲面的相关操作技巧,感兴趣 ...
- js 列表对象数据 转换成 excel格式数据
代码实现 async exportExcel() {// element-ui loading效果参数this.exportLoading = true// 获取列表数据请求 const { rows ...
- JAVA8 利用stream流将一个对象集合转换成另一个对象集合
// 从数据库中查询出的对象集合List<OperationStation> operationStations = operationStationJoinMapper.selectJo ...
- 关于代码中生成HSSFWorkbook对象,转换成输入流,上传到服务器.下载的xls文件打开报错问题
今天在做项目开发是遇到一个问题,就是在java代码中创建HSSFWorkbook表格写入数据后,不直接返回给前端下载,而是上传到服务器: 开始直接通过 InputStream is = new Byt ...
- js将1,2,3转换成周一、周二、周三(对象日期转换成字符串)
当后台返回的数据是数组格式的["1","3","5"],但是前台需要展示成周一.周三.周五的时候,可以使用下面的方法 convertData ...
- 临时对象与NRV技术
临时对象与NRV技术 <More Effective C++>中讲到,在C++中真正的临时对象是看不见的,它们不出现在你的源代码中.建立一个没有命名的非堆(non-heap)对象会产生临时 ...
最新文章
- 把鼠标、触摸屏、触控笔统一起来,Pointer Events介绍
- linux java进程消失_Linux系统下的Java进程无故消失怎么办?
- Apache SkyWalking 为.NET Core带来开箱即用的分布式追踪和应用性能监控
- HTML5 音频视频
- 研发管理---(1)持续交付
- 一般试卷的纸张大小是多少_国际A4纸尺寸大小是多少?标准A4纸像素分辨率换算方法...
- 每周工作量及时间统计
- marqueeview更改字体颜色_安卓手机上可以编辑字体的便签软件哪个好?
- 易语言静态连接器提取_正确易语言链接器link.exe,使易语言支持静态编译
- Android 中获取符合分辨率的视频
- 易语言鼠标移动到桌面计算机图标上,易语言桌面图标提示源码
- [安洵杯 2019]easy_web
- c语言三阶素数魔方阵,C语言 三阶魔方阵
- 浅谈JdbcDaoSupport
- Shiro RememberMe 1.2.4 反序列化命令执行漏洞复现 kali docker
- NFT: 开启加密艺术时代的无限可能
- 怎么用Q-Q图验证数据集的分布
- 用友NC65 配置UAP时 打开sysconfig闪退
- 时间序列模型 (二):移动平均法
- python安装h5py
热门文章
- MVP:界面与业务逻辑分离在Winform中的应用
- Windows Server中企业证书服务的安装
- [Python爬虫] 在Windows下安装PIP+Phantomjs+Selenium
- Git之深入解析如何将项目迁移到Git
- HarmonyOS之深入解析媒体会话的管理
- 2013\Province_Java_C\2.组素数
- Python+Hive环境搭建
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1082:求小数的某一位
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1045:收集瓶盖赢大奖
- 【机器视觉】 Halcon代码导出高级语言代码