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

c – 在只读结构中分配数据成员,STL集中的类

发布时间:2020-12-16 06:02:06 所属栏目:百科 来源:网络整理
导读:我遇到的问题的最小例子如下: #include setusing namespace std;class foo {public: int value,x; foo(const int in_v) { value = in_v; x = 0; } bool operator(const foo rhs) const { return value rhs.value; }};int main() { foo y(3); setfoo F; F.in
我遇到的问题的最小例子如下:
#include <set>
using namespace std;

class foo {
public:
  int value,x;
  foo(const int & in_v) {
   value = in_v;
   x = 0;
  }
  bool operator<(const foo & rhs) const {
   return value < rhs.value; 
 }
};

int main() {
  foo y(3);
  set<foo> F;
  F.insert(y);

  // Now try to modify a member of the set
  F.begin()->x=1;
  return 0;
}

使用错误错误:在只读结构中分配数据成员’foo :: value’.我觉得我在这里缺少一些简单的东西,但为什么我无法修改我的课程中的成员x?

解决方法

一组中的对象是不可变的;如果要修改对象,则需要:

>从集合中创建对象的副本,
>修改副本,
>从集合中删除原始对象,和
>将副本插入到集合中

它看起来像这样:

std::set<int> s;
s.insert(1);

int x = *s.begin(); // (1)
x+= 1;              // (2)
s.erase(s.begin()); // (3)
s.insert(x);        // (4)

(编辑:李大同)

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

    推荐文章
      热点阅读