1、如果决定一个函数必须被声明为两个类的友元,则友元声明如下:
class Window ; //只声明
class Screen
{
friend bool is_equal(Screen& scr,Window& win) ; //将is_equal函数声明为类Screen的友元
};
class Window
{
friend bool is_equal(Screen& scr,Window& win) ; //将is_equal函数声明为类Window的友元
};
2、如果我们决定该函数必须为一个类的成员函数,并且是另一个类的友元,则成员函数声明和友元声明如下:
class Window ; //只声明
class Screen
{
//copy是类Screen的成员
Screen& copy(Window& win) ;//将copy函数声明为类Screen的成员函数
};
class Window
{
//Screen::copy是类Window的一个友元
friend Screen& Screen::copy(Window& win) ;//将copy函数声明为类Window的友元函数,注意copy前面加了Screen::
};
Screen& Screen::copy(Window& win){ /* ... */}
注意一点:copy函数前面加了类限制符(Screen::),还有就是只有当一个类的定义已经被看到时,它的成员函数才能被声明为另一个类的友元。比如:只有当类Screen的定义被看到之后,我们才可以把它的成员函数copy声明为另一个类的友元。
2718

被折叠的 条评论
为什么被折叠?



