如何使用Overload operator []为左侧赋值?

Abh*_*eet 2 c++ operator-overloading

我做了以下代码: -

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;
}
Run Code Online (Sandbox Code Playgroud)

我不知道设定值L.H.S使用operator[].请指导我如何设置xobj[1]

Alo*_*ave 5

[]用作左值,您的重载[]应该通过引用返回.

是否可以返回私人会员的引用?
是的,完全没问题.
如果您看到STL,大多数STL类都会这样做.
规则是,const如果您不希望用户修改其中的内容,或者如果您想允许用户修改它,您应该返回对私有成员的引用,您可以返回non const引用.

您基本上通过创建类的用户来隐藏(抽象)类的详细信息private,但您仍然提供了能够修改单个元素的功能.