469,632 Members | 1,772 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,632 developers. It's quick & easy.

how to declare a friend function that can access two class

how to declare a friend function that can access two class
it will look like the following
class A
{
private:
int i;
public:
A(){}
~A(){}
friend void call(A &a, B &b);

};

class A
{
private:
int j;
public:
B();
~B()
friend void call(A &a, B &b);
};

void call(A &a, B &b)
{
cout << a.i << endl << b.j <<endl;
}
Oct 23 '06 #1
2 1806
A friend function can be a member of another class :
class A;

class B
{
private :
int j;
public :
B(int j_):j(j_){}

void call(A&);
};
class A
{
private :
int i;
public :
A(int i_):i(i_){}
friend void B::call(A &a);
};
void B::call(A &a)
{

cout << a.i << j << endl;
}

or

class A;

class B
{
private :
int j;
public :
B(int j_):j(j_){}

friend void call(A&,B&b);
};
class A
{
private :
int i;
public :
A(int i_):i(i_){}
friend void call(A &a,B &b);
};
void call(A &a,B &b)
{

cout << a.i << b.j << endl;
}

freegnu wrote:
how to declare a friend function that can access two class
it will look like the following
class A
{
private:
int i;
public:
A(){}
~A(){}
friend void call(A &a, B &b);

};

class A
{
private:
int j;
public:
B();
~B()
friend void call(A &a, B &b);
};

void call(A &a, B &b)
{
cout << a.i << endl << b.j <<endl;
}
------=_NextPart_000_0045_01C6F6B8.F8416B10
Content-Type: text/html; charset=gb2312
Content-Transfer-Encoding: quoted-printable
X-Google-AttachSize: 2408

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.2963" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2>
<DIV class=altbg2 id=code0
style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px;MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK: break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid; FONT-FAMILY: fixedsys"><FONT
face=>how to declare a friend function that can access two class</FONT></DIV>
<DIV class=altbg2
style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px;MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK: break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid; FONT-FAMILY: fixedsys"><FONT
face=>it will look like the following</FONT></DIV>
<DIV class=altbg2
style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px;MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK: break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid; FONT-FAMILY: fixedsys">class
A<BR>{<BR>&nbsp;&nbsp;private:<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int i;<BR>&nbsp;&nbsp;public:<BR>&nbsp; &nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;A(){}<BR>&nbsp; &nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;~A(){}<BR>&nbsp; &nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; friend void call(A &amp;a, B
&amp;b);<BR><BR>};<BR><BR>class A<BR>{<BR>&nbsp;&nbsp;private:<BR>&nbsp;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;int
j;<BR>&nbsp;&nbsp;public:<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
&nbsp; B();<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;
~B()<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; friend void call(A
&amp;a, B &amp;b);<BR>};<BR><BR>void call(A &amp;a, B
&amp;b)<BR>{<BR>&nbsp;&nbsp;cout &lt;&lt; a.i &lt;&lt; endl &lt;&lt; b.j
&lt;&lt;endl;<BR>}</DIV></FONT></DIV></BODY></HTML>

------=_NextPart_000_0045_01C6F6B8.F8416B10--
Oct 23 '06 #2
thanks for your reply
"Frank-O" <fr*****************@gmail.com>
??????:11**********************@f16g2000cwb.google groups.com...
A friend function can be a member of another class :
class A;

class B
{
private :
int j;
public :
B(int j_):j(j_){}

void call(A&);
};
class A
{
private :
int i;
public :
A(int i_):i(i_){}
friend void B::call(A &a);
};
void B::call(A &a)
{

cout << a.i << j << endl;
}

or

class A;

class B
{
private :
int j;
public :
B(int j_):j(j_){}

friend void call(A&,B&b);
};
class A
{
private :
int i;
public :
A(int i_):i(i_){}
friend void call(A &a,B &b);
};
void call(A &a,B &b)
{

cout << a.i << b.j << endl;
}

freegnu wrote:
how to declare a friend function that can access two class
it will look like the following
class A
{
private:
int i;
public:
A(){}
~A(){}
friend void call(A &a, B &b);

};

class A
{
private:
int j;
public:
B();
~B()
friend void call(A &a, B &b);
};

void call(A &a, B &b)
{
cout << a.i << endl << b.j <<endl;
}
------=_NextPart_000_0045_01C6F6B8.F8416B10
Content-Type: text/html; charset=gb2312
Content-Transfer-Encoding: quoted-printable
X-Google-AttachSize: 2408

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.2963" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2>
<DIV class=altbg2 id=code0
style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px;
BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px;
MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK:
break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid;
FONT-FAMILY: fixedsys"><FONT
face=>how to declare a friend function that can access two
class</FONT></DIV>
<DIV class=altbg2
style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px;
BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px;
MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK:
break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid;
FONT-FAMILY: fixedsys"><FONT
face=>it will look like the following</FONT></DIV>
<DIV class=altbg2
style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px;
BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px;
MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK:
break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid;
FONT-FAMILY: fixedsys">class
A<BR>{<BR>&nbsp;&nbsp;private:<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;int i;<BR>&nbsp;&nbsp;public:<BR>&nbsp; &nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;A(){}<BR>&nbsp; &nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;~A(){}<BR>&nbsp; &nbsp;&nbsp;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; friend void call(A &amp;a, B
&amp;b);<BR><BR>};<BR><BR>class A<BR>{<BR>&nbsp;&nbsp;private:<BR>&nbsp;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;int
j;<BR>&nbsp;&nbsp;public:<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
&nbsp; B();<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;
~B()<BR>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; friend void
call(A
&amp;a, B &amp;b);<BR>};<BR><BR>void call(A &amp;a, B
&amp;b)<BR>{<BR>&nbsp;&nbsp;cout &lt;&lt; a.i &lt;&lt; endl &lt;&lt; b.j
&lt;&lt;endl;<BR>}</DIV></FONT></DIV></BODY></HTML>

------=_NextPart_000_0045_01C6F6B8.F8416B10--

Oct 23 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

12 posts views Thread by Bryan Parkoff | last post: by
15 posts views Thread by Samee Zahur | last post: by
5 posts views Thread by Teddy | last post: by
3 posts views Thread by jdurancomas | last post: by
19 posts views Thread by subramanian100in | last post: by
2 posts views Thread by Immortal Nephi | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.