加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C重载<<没有const输入对象??会产生错误,它会随着const对象

发布时间:2020-12-16 09:41:57 所属栏目:百科 来源:网络整理
导读:我有以下运算符重载原型: ostream operator(ostream outputstream,my_arr arr) my_arr operator+(const my_arr left,const my_arr right) 我打电话: cout (arr1 + arr2); 这给了我以下编译器错误: error: no match for ‘operator’ in ‘std::cout opera
我有以下运算符重载原型:

ostream& operator<<(ostream & outputstream,my_arr& arr)

 my_arr operator+(const my_arr& left,const my_arr& right)

我打电话:

cout << (arr1 + arr2);

这给了我以下编译器错误:

error: no match for ‘operator<<’ in ‘std::cout << operator+(const my_array&,const my_array&)((*(const my_array*)(& y)))’

如果我改变<<<<以下内容:

ostream& operator<<(ostream & outputstream,const my_arr& arr)

我可能会遗漏一些基本的东西,但为什么会这样呢?
谢谢你的帮助.

解决方法

问题是当作为参考传递时,您不能传递“临时”(rvalue)对象,例如添加的结果.传递const引用时,C规则允许传递临时值,因为它保证不会被写入.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读