我做了以下代码:-
class A{
bool bFlag[2];
public:
A(){
for(int i = 0; i < 2; i++)
bFlag[i] = false;
}
bool operator[](int r){ //i know how to assign value to R.H.S using operator[]
if( r >= 0 || r < 2 ){
bFlag[r] = true;
return bFlag[r];
}
return false;
}
};
int main(){
A obj;
bool x;
x = obj[0]; //this i know
//obj[1] = x; //how to do this is my doubt?
return 0;
}
我不知道使用 operator[]
将值设置为 L.H.S
。
请指导我如何将 x
值设置为 obj[1]
最佳答案
要将 []
用作左值,您重载的 []
应该通过引用返回。
可以返回对私有(private)成员的引用吗?
是,非常好。
如果您看到 STL,大多数 STL 类都会这样做。
规则是,如果您不希望用户修改那里的内容,或者如果您想让用户修改它,您可以返回一个 non const
引用。
您基本上通过将类的用户设为private
来向类的用户隐藏(抽象)类的详细信息,但您仍然提供能够修改单个元素的功能。
关于c++ - 如何使用重载运算符 [] 为左侧赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6692982/