【发布时间】:2017-08-21 09:23:08
【问题描述】:
我知道如何重载operator[] 如下:
T& operator [](int idx) {
return TheArray[idx];
}
T operator [](int idx) const {
return TheArray[idx];
}
但我想要控制arr[i] = value 分配的值。
我想将值控制在 0 到 9 之间。
有什么语法可以这样做吗?
【问题讨论】:
-
你需要返回一个包装元素的代理对象,并让它对赋值进行范围检查。
-
控制是什么意思?是要触发编译错误,还是要在运行时抛出异常,还是要静默忽略赋值,还是要截断不在范围内的值?
-
@taskinoor 正如我们对类的一贯做法......我们想抛出异常!
-
澄清问题。你想对
operator[]的结果进行范围检查,还是要存储一个范围检查的T?在我看来,在容器之外有一个可以有任何值的对象似乎很奇怪,但容器内的对象有一个有限的范围。 (如果插入一个已经越界的对象会怎样?) -
应该很奇怪 :))) 我正在做一个 BigNum 项目,我已经将每个数字存储在一个整数向量中。你是对的......对于一种方法,我可以定义一个名为 digit 的类并将边界应用于该类。
标签: c++ operator-overloading operator-keyword