【发布时间】:2021-06-28 08:03:12
【问题描述】:
我有一个名为 RSArray 的类,其中包含一个常量数据成员。但是对于这个类,我想创建一个自定义赋值运算符。请参阅下面的代码:-
class RSArray
{
private:
int *data;
const int max_size;
public:
RSArray(size) : max_size(size)
{
data = new int[max_size];
}
RSArray &operator=(const RSArray &src)
{
data = new int[src.max_size];
max_size = src.max_size
}
}
int main()
{
RSArray one(10), two(15);
one = two;
}
上面的代码在调用赋值运算符时出现错误,因为我们无法更改 const 数据成员的值。
有没有其他方法可以消除这个错误?
【问题讨论】:
-
你在哪里初始化
max_size?这是对所有实例都相同还是在创建新实例时单独设置?对我来说,您似乎更愿意使用std::vector<int> data;类成员变量。 -
如果你想支持赋值,请不要将 max_size 设为 const。
-
你所要求的没有任何意义。如果实例中存在无法更改的数据,那么您也不能期望使一个实例看起来像另一个实例 - 因为如果另一个实例看起来不同,那么这样做就会对其进行更改。
-
@πάνταῥεῖ 看起来他们正在实施
homework::vector<int> -
@Caleth 无论 OP 的情况如何,我都在这里给出建议,这与 SO Q&A 完全无关。