将数组从一个对象复制到另一个对象

时间:2020-03-08 22:28:18

标签: c++

set &set::operator=(set const &s) {
elems = new int[s.num_elems];
num_elems = *(new size_t);
for (size_t i = 0; i < s.num_elems; i++) {//i am getting error in this line on "=" saying " a value type int* cannot be assigned tpo an entity of type int".
    elems[i] = &(s.elems[i]);
}
num_elems = s.num_elems;

return *this;

};

我试图将一个对象复制到另一个对象,它们每个都有两个私有size_t num_elems和int * elems.i尝试更改指针符号并直接复制数组,但每次都会给我错误

1 个答案:

答案 0 :(得分:1)

此行不正确:num_elems = *(new size_t); 它只会泄漏几个字节,没有任何用处。删除它。

然后在将s.elems[i]的地址分配给elems[i]时出现问题。这是不对的,因为elems[i]是一个整数,而s.elems[i]的地址是……好吧,一个地址。

因此您需要将以下行:elems[i] = &(s.elems[i]);更改为:elems[i] = s.elems[i];

一些提示:

  • &这称为“地址”运算符。它获取内存中某物的地址。
  • *这称为“指针取消引用”运算符。它可以帮助您访问指针所指向的内容。
  • 当您访问带有方括号的数组时,如下所示:elems[i]您将取消引用它。这意味着您正在使用指针所指向的值。与此操作相同:*(elems + i)
  • 研究指针:D刚开始时有些棘手,但随着时间和练习的进行会变得更加容易。