C ++:使用代理类在非代理类中进行成员函数调用

时间:2016-10-22 06:21:50

标签: c++

我目前正在开发一个类,在get函数中,我必须返回对其中一个成员的引用。然后,在通过=运算符更改此成员之后,我还想调用其中一个类成员函数。

#include <iostream>

class A
{
  public:
    A() : member(0)
    {}
    int & get_member()
    {
      needed_call();
      return Aproxy(this);
    }
    void needed_call()
    {
      std::cout << "Ran call: " << member << std::endl;
    }
  private:
    int member;
};

class Aproxy
{
  friend A;
  public:
    Aproxy(A * ap): _ap(ap) {}
    A & operator=(const int & i)
    {
      _ap->member = i;
      _ap->needed_call();
    }
  private:
    A * _ap;
};

int main(void)
{
  A a;
  a.get_member() = 5;
}

这里的问题是两个类都需要另一个类的定义来执行此任务。

如果此程序有效,则会打印出以下内容

  

Ran Call:0

     

Ran Call:5

有办法做到这一点吗?这甚至可能吗?

0 个答案:

没有答案