日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

×××××sales_data通过类型转换形成的临时对象不能转换成sales_data (非常量引用)

發(fā)布時間:2024/4/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ×××××sales_data通过类型转换形成的临时对象不能转换成sales_data (非常量引用) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文件? ?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++編譯器如下結(jié)果:

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對象,執(zhí)行 i.combine(s)時候,s通過轉(zhuǎn)換構(gòu)造函數(shù)隱式類型轉(zhuǎn)換為臨時量sales_data,但是這個臨時量不能夠轉(zhuǎn)換為? combine的參數(shù)類型 sales_data &

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結(jié)

以上是生活随笔為你收集整理的×××××sales_data通过类型转换形成的临时对象不能转换成sales_data (非常量引用)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。