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尝试更改指针符号并直接复制数组,但每次都会给我错误
答案 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)