gpt4 book ai didi

c++ - 如何控制运算符[]分配的值

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:20:47 25 4
gpt4 key购买 nike

我知道如何重载 operator[] 如下:

T& operator [](int idx) {
return TheArray[idx];
}

T operator [](int idx) const {
return TheArray[idx];
}

但我想要的是控制arr[i] = value赋值。我想控制值在 0 到 9 之间。有什么语法可以这样做吗?

最佳答案

您必须编写一个模板类来保存对数组(T 类型)中元素的引用,在该模板中您实现赋值运算符,然后您可以在其中实现您的检查。然后从 [] 运算符返回此模板类的对象。

像这样:

template< typename T> class RangeCheck
{
public:
RangeCheck( T& dest): mDestVar( dest) { }
RangeCheck& operator =( const T& new_value) {
if ((0 <= new_value) && (new_value < 9)) { // <= ??
mDestVar = new_value;
} else {
... // error handling
}
return *this;
}
private:
T& mDestVar;
};

关于c++ - 如何控制运算符[]分配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43067251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com