[問題] 只想分享自己某些介面給friend

看板C_and_CPP作者 (Ar藤)時間8年前 (2016/03/03 11:19), 編輯推噓0(0015)
留言15則, 5人參與, 最新討論串1/1
問題是這樣的 class A { friend B; public: f1() f2() private: A() _f1() ... _f100() } class A 只有2個member function是public 有快100個是private 而class B也只有用到A的3個private member function 其中一個是ctor 另外2個只是單純private member data的set介面 奇怪的設計,看起來A就是只給B用, 不弄成inner class有可能是A會長很大,或是以後可能還會給別人用 不過我想問的是c++有辦法利用friend或什麼簡單的修改指定那3個private給B就好嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.130.177.154 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1456975190.A.C84.html

03/03 11:28, , 2F
可以,你可以只指定某些function為friend給B
03/03 11:28, 2F

03/03 12:28, , 3F
只看到A全部的private都可被access的方法 請問你指的是
03/03 12:28, 3F

03/03 12:28, , 4F
哪一段?@@
03/03 12:28, 4F

03/03 12:32, , 5F
1講的是B的某些function可用A的private 2是non-member
03/03 12:32, 5F

03/03 12:33, , 6F
可用A的private 但我想做的是B可用A的部份private
03/03 12:33, 6F

03/03 12:55, , 7F
抱歉看錯。 如果做一個C,讓C只有那3個function
03/03 12:55, 7F

03/03 12:55, , 8F
再讓A friend給C,但不要friend給B,然後C friend給B
03/03 12:55, 8F

03/03 12:56, , 9F
讓B只能透過C幫忙,這樣呢?
03/03 12:56, 9F

03/03 13:19, , 10F
friend function??
03/03 13:19, 10F

03/03 13:38, , 11F
感謝C大和t大 應該都可以 只是介面變了會動到B的code
03/03 13:38, 11F

03/03 13:38, , 12F
就改成非private
03/03 13:38, 12F

03/03 13:41, , 13F
最後我想 這份code本來就有點麻煩 還是不要動好了XD
03/03 13:41, 13F

03/03 13:45, , 14F
A因為ctor只有friend B能用 所以private和public沒差
03/03 13:45, 14F

03/04 02:12, , 15F
pimpl?
03/04 02:12, 15F
文章代碼(AID): #1MrwrMo4 (C_and_CPP)