g(x*)是x的友元函数,却用来对自己的成员变量i累加,有必要吗?为什么不把累加的操作放在x的内部,而让这个函数作为y的友元函数呢?
如果按照原来的要求,可以写出这样的代码:
class X;
class Z;
class Y
{
public:
void g(X* px);
};
class Z
{
public:
void f(X* px);
void h(X* px);
};
class X
{
public:
friend class Z;
friend void Y::g(X* px);
friend void Z::h(X* px);
private:
int i;
};
void Y::g(X* px)
{
px->i++;
}
void Z::f(X* px)
{
px->i += 5;
}
void Z::h(X* px)
{
px->i += 10;
}
代码顺序不能颠倒!!
ls 答非所问