我目前正在开发一个类,在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
有办法做到这一点吗?这甚至可能吗?