作者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