gpt4 book ai didi

c++ - 是否可以在像 `int &operator[]' 这样的重载中使用修改后的返回引用?

转载 作者:行者123 更新时间:2023-11-30 01:47:43 25 4
gpt4 key购买 nike

假设我有一个实现按需增长的 int 数组的类。该类还实现了 int &operator[] 方法重载 [] 运算符并返回对数组中值的引用。

现在我像这样在循环中使用运算符

classInstance[index] += 1;

我想知道是否可以在 int &operator[] 函数中使用增量值?

为了清楚起见,我想要的是能够知道引用整数的新值是什么,以便更新最大值和最小值。

最佳答案

解决这个问题的方法是返回一些假装int&的东西,同时它本身为operator+=等方法提供重载> 等

像这样:

class MyIntReference {
public:
MyIntReference(int& reference_to_wrap) :
wrapped_reference_{reference_to_wrap}
{}

// this method returns void, but you could have it return whatever you want
void operator+=(const int addend) {
wrapped_reference_ += addend;
DoWhateverYouWant();
}

private:
int& wrapped_reference_;
}

// then, in your other class
MyIntReference YourOtherClass::operator[](const int index) {
return MyIntReference{my_array_[index]};
}

显然,这只是一段粗略的代码,但我认为它可以被提炼成非常好的代码。

关于c++ - 是否可以在像 `int &operator[]' 这样的重载中使用修改后的返回引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31230917/

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