8:27am ccbsd3:friend/> g++ friend.cpp friend.cpp: In function `void modifyme(int, int)': friend.cpp:8: error: `int MySomething::kk' is private friend.cpp:26: error: within this context friend.cpp: In function `int main()': friend.cpp:8: error: `int MySomething::kk' is private friend.cpp:42: error: within this context friend.cpp:42: error: expected `;' before ':' token wcpeng has logged off ttypo from 140.113.24.231. 8:27am ccbsd3:friend/> cat -n friend.cpp 1 //friend.cpp -- by tsaiwn@csie.nctu.edu.tw 2 //friend id the only one who can touch your private 3 #include 4 using namespace std; 5 // ? FRIEND function 6 // ? OVERLOADed function (function name overloaded) 7 class MySomething { 8 int kk; 9 public: 10 float x,y; 11 void talk(int); 12 private: 13 float z; 14 friend void modifyme(int); 15 friend void modifyme(float); 16 }; 17 18 void modifyme(int m){ 19 MySomething you; 20 you.kk = m*10; 21 cout << "in First me\n"; 22 // ... 23 } 24 void modifyme(int m,int n){ // not my friend 25 MySomething you; 26 you.kk = m+n; // ERROR ! 27 cout << "in Second me\n"; 28 // ... 29 } 30 void modifyme(float m){ 31 MySomething you; 32 you.z = m; 33 you.x = m; 34 cout << "in Third me\n"; 35 // ... 36 } 37 int main() 38 { MySomething him; 39 modifyme(10); 40 modifyme(1,2); 41 modifyme((float)10.0); 42 him.kk := 123; // ERROR ! 43 return 0; 44 } 8:28am ccbsd3:friend/> vim friend.cpp 26 // you.kk = m+n; // ERROR ! 42 // him.kk := 123; // ERROR ! 8:30am ccbsd3:friend/> g++ friend.cpp 8:30am ccbsd3:friend/> ./a.out in First me in Second me in Third me 8:30am ccbsd3:friend/>