二进制“=”: 没有找到接受“const triangle”类型的左操作数的运算符(500元酬谢)

wxf87541163 2014-01-23 04:37:05
朋友问的,我也不太懂C++,所以请C++版的牛人们帮帮忙
错误 1 error C2678: 二进制“=”: 没有找到接受“const triangle”类型的左操作数的运算符(或没有可接受的转换) d:\program files (x86)\microsoft visual studio 11.0\vc\include\algorithm 1799 1 Project1

代码就2个文件 传了网盘
http://pan.baidu.com/s/1pJ135xT


第一个解决的500元酬谢 钱不多 意思一下 可以的话加QQ 1三6520六3
...全文
431 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 7 楼 wxf87541163 的回复:
谢谢各位 已解决
哥们,能告诉我是怎么解决的吗?
wxf87541163 2014-01-26
  • 打赏
  • 举报
回复
谢谢各位 已解决
wxf87541163 2014-01-24
  • 打赏
  • 举报
回复
顶起来。。。
JiMoKuangXiangQu 2014-01-24
  • 打赏
  • 举报
回复
引用 楼主 wxf87541163 的回复:
朋友问的,我也不太懂C++,所以请C++版的牛人们帮帮忙 错误 1 error C2678: 二进制“=”: 没有找到接受“const triangle”类型的左操作数的运算符(或没有可接受的转换) d:\program files (x86)\microsoft visual studio 11.0\vc\include\algorithm 1799 1 Project1 代码就2个文件 传了网盘 http://pan.baidu.com/s/1pJ135xT 第一个解决的500元酬谢 钱不多 意思一下 可以的话加QQ 1三6520六3
把代码上全点啥,兄弟 or 姐们
ri_aje 2014-01-24
  • 打赏
  • 举报
回复
是选择的容器造成的。 triangleSet 是 std::multiset<triangle>,后者的 iterator type 包含的对象类型是 const-qualified 的,即 *(workset.begin/end) 得到的类型是 const triangle. remove_if 的实现中会用到赋值,这要就造成 a = b 而 a 是 const triangle 类型,因此报错。 纯粹从语法讲,给 triangle 增加这样的赋值函数就能够通过编译。

 void operator = (triangle const&) const // note it's a const member function
 {
 }
但显然语义是不正确的。 原因还是在于容器的选择。multiset 一般都基于平衡二查树实现,此时 triangle 是其键值类型,因此不能随便修改,否则数据结构的 invariant 就破坏了,为了避免这样,multiset 的 iterator 指向的元素都是不能修改了,和 remove_if 对迭代器的要求冲突。
wxf87541163 2014-01-23
  • 打赏
  • 举报
回复
引用 2 楼 zhuobattle 的回复:
这里面代码要是他自己写的,完全不需要问啊。
应该不是的吧
zhuobattle 2014-01-23
  • 打赏
  • 举报
回复
这里面代码要是他自己写的,完全不需要问啊。
wxf87541163 2014-01-23
  • 打赏
  • 举报
回复
在线等啊。。

65,184

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧