[問題] friend class 的問題

看板C_and_CPP作者 (嗚啦啦)時間14年前 (2010/05/23 06:50), 編輯推噓3(305)
留言8則, 5人參與, 最新討論串1/1
這是寫程式時,遇到的問題 我宣告兩個class,分別叫A_1, B_1 A_1是B_1的friend class 我在A_1裡放置B_1型態的指標,以存取B_1的成員 這是存取的方式 現在我再宣告兩個class,分別叫A_2,B_2 A_2繼承A_1,B_2繼承B_1 我想讓A_2存取B_1的成員 請問,有什麼好方法嗎??? 下面這個方法除外 => 不能在B_1裡,宣告A_2是friend class 或 function -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.76.190 ※ 編輯: wudidog 來自: 123.193.76.190 (05/23 06:52)

05/23 08:50, , 1F
請爸爸向他的朋友要資料...
05/23 08:50, 1F
有試,只是不知道是不是你說的方式 因為code有點長,我用文字說明 B_1 裡有 int v_b這個 protected變數 A_1 裡有 B_1 *v_a這個 protected變數 有A_1裡的f_a()函數,可以存取v_a->v_b,這一定沒問題 但A_2裡的f_b()函數就無法存取v_a->v_b compiler會 error說, B_1::v_b是protected ※ 編輯: wudidog 來自: 123.193.76.190 (05/23 09:46)

05/23 11:06, , 2F
是要在A_1寫Get或Set,A_2再去使用吧,不是直接拿v_a來用
05/23 11:06, 2F

05/23 12:29, , 3F
compiler看到你在A_2使用 別人的protected 就不會讓你過阿
05/23 12:29, 3F

05/23 12:32, , 4F
照L大和I大說的 利用老爸v_a 去存取B1的public的get or set吧
05/23 12:32, 4F

05/23 12:33, , 5F
阿講錯 就是I大說的 A1要寫get set去存取你的v_b
05/23 12:33, 5F

05/23 16:21, , 6F
v_v => v_A => v_a => v_va .... A_A
05/23 16:21, 6F

05/23 16:22, , 7F
就只好用父類別來幫忙產生getter/setter囉
05/23 16:22, 7F

05/24 07:16, , 8F
感謝各位…突然頓悟了 ^ ^
05/24 07:16, 8F
文章代碼(AID): #1B-5-eZr (C_and_CPP)