作者susanyen (susan)
看板EE_DSnP
标题[问题] friend 的问题
时间Tue Jan 20 13:19:30 2009
#include<iostream>
using namespace std;
class A;
class B;
class A
{
//friend class B; //这样没问题,会印出0
//friend void B:: Bprint(A& a); //error:`void B::Bprint(A&)' declared as
// friend before type `B' defined
//然後error:'int A::_Adata' is private
public:
A(void):_Adata(0){}
private:
int _Adata;
};
class B
{
public:
void Bprint(A& a){
cout << a._Adata << endl;
}
};
int main(){
A a;
B b;
b.Bprint(a);
system("pause");
}
若将整个class B设为class A的friend 没问题
但单独将一个B 的member function 设为class A的friend 就出问题
看了compiler 我还是不知道为什麽会错
恳请高手们解惑 谢谢~~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.240.155
※ 编辑: susanyen 来自: 140.112.240.155 (01/20 13:32)
1F:推 ric2k1:好像就是这样... 试着把 B 定义在 A 前面, 然後将 01/21 00:09
2F:→ ric2k1:B::Bprint() { ... } 搬到下面(class 外面)或是别的档案 01/21 00:10