C : использование прокси-класса для выполнения вызова функции-члена в классе, отличном от прокси

#c

#c

Вопрос:

В настоящее время я работаю над классом, в котором в функции get я должен возвращать ссылку на один из членов. Затем, после изменения этого члена с помощью оператора = , я также хочу выполнить вызов одной из функций-членов класса.

 #include <iostream>

class A
{
  public:
    A() : member(0)
    {}
    int amp; 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 amp; operator=(const int amp; i)
    {
      _ap->member = i;
      _ap->needed_call();
    }
  private:
    A * _ap;
};

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

Проблема здесь в том, что обоим классам нужны определения другого класса для выполнения этой задачи.

Если бы эта программа работала, она бы напечатала следующее

Выполненный вызов: 0

Выполненный вызов: 5

Есть ли способ сделать это? Возможно ли это вообще?

Комментарии:

1. (1) Передайте объявление ваших классов и (2) определите функции-члены вне класса.

2. DOH, спасибо. Теперь я чувствую себя глупо.