[問題] 有關於friend

看板C_and_CPP作者 (猩猩)時間13年前 (2010/12/26 21:58), 編輯推噓0(0016)
留言16則, 4人參與, 最新討論串1/1
小弟是用C++ 想要練習friend的用法 可是一直有問題.... 我設了2個class class A{ friend void test( A& ) public: ....... private: int x; } class B{ public: void test( A& ) } void B::test( A& a ){ a.x=1000; } 諸如這樣的程式碼 我也是看老師的投影片模仿 但是不知道編譯一直有錯誤 說什麼我 test 是 void...等等的 而friend用main裡定義的function就沒問題 是有什麼問題呢.... 感謝大大!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.155.167.222

12/26 22:02, , 1F
是因為你沒在A裡跟它說那是B的test嗎?!
12/26 22:02, 1F

12/26 22:04, , 2F
你那樣寫是表示→「全域的test才是我朋友」
12/26 22:04, 2F

12/26 22:06, , 3F
我有試過friend void B::test( A& ) 可是還是不行
12/26 22:06, 3F

12/26 22:08, , 4F
你該表示的是「class B 是我朋友」
12/26 22:08, 4F

12/26 22:11, , 5F
friend class B; 也不行....
12/26 22:11, 5F

12/26 22:12, , 6F
彼此都要看到對方定義才行, 寫成不同標頭檔拿來引入吧
12/26 22:12, 6F

12/26 22:13, , 7F
friend class B 關係似乎太緊密了 @_@
12/26 22:13, 7F

12/26 22:19, , 8F
是要2邊的.h 都要互相include嗎?
12/26 22:19, 8F

12/26 22:21, , 9F
阿 reference不用, 你把 B 寫 A 前面, 在 B 前再加上
12/26 22:21, 9F

12/26 22:21, , 10F
class A; 做前置宣告
12/26 22:21, 10F

12/26 22:28, , 11F
ㄜ.... 其實還是有點不懂@@ 為什麼我看網路上的程式碼
12/26 22:28, 11F

12/26 22:29, , 12F
都不用什麼include的...
12/26 22:29, 12F

12/26 22:30, , 13F
有些程式碼需要看到定義, 有些只要宣告, 如果你直接寫
12/26 22:30, 13F

12/26 22:30, , 14F
面, 跟寫上 #include 是一樣意思
12/26 22:30, 14F

12/26 22:31, , 15F
^在前
12/26 22:31, 15F

12/26 22:34, , 16F
I SEE 解決了感謝!!
12/26 22:34, 16F
文章代碼(AID): #1D5qdh8w (C_and_CPP)