小编lor*_*eld的帖子

C++ 如果括号 [] 运算符在赋值的 LHS 与 RHS 上进行重载,我可以重载它来做不同的事情吗?

我希望完成以下工作:

int x, y, z;

  1. foo[x] = y; 表现得像 do_this(x,y);

  2. z = foo[x]; 表现得像 z = do_that(x)

我可以实现第一与Foo类和Helper类,其中operator[]一个通过返回值Helper与构造类x,和operator=用于Helper类被定义为运行do_this(this->x, y)。像下面这样:

class Foo {
    public:
    Helper operator[](int x) { 
        return Helper(x);
    }
};

class Helper {
    public: 
    Helper(x) {
        this->x = x;
    }
    void operator=(int y) {
        do_this(this->x, y);
    }
    private:
    int x;
};
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚的是如何完成(2)。有没有办法重载 theoperator[]以便它知道它是在 lhs 还是 rhs 上使用的?

c++ operator-overloading

5
推荐指数
1
解决办法
55
查看次数

标签 统计

c++ ×1

operator-overloading ×1