给定以下代码:
class Screen;
class WindowMgr
{
WindowMgr& relocateScreen( int r, int c, Screen& s);
};
class Screen
{
friend WindowMgr& WindowMgr::relocateScreen( int r, int c, Screen& s);
// ^ cannot access private member declared in class 'WindowMgr'
int m_nR,
m_nC;
};
WindowMgr& WindowMgr::relocateScreen( int r, int c, Screen& s)
{
s.m_nR = r;
s.m_nC = c;
return *this;
}
为什么Screen
类不能声明WindowMgr::relocateScreen
成员函数为友元?Screen
不想使用另一个类的这个私有成员函数,而只是希望该函数能够访问它自己的私有成员。
relocateScreen
如果仅打算在WindowMgr
类中使用,则将函数公开可能是糟糕的设计。同样,如果不打算在任何其他情况下访问私有成员,那么结交Screen
of 的朋友可能是糟糕的设计。WindowMgr
WindowMgr
我在哪里错了?什么是正确的方法?我是在自欺欺人吗?