#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, спасибо. Теперь я чувствую себя глупо.