作者Arton0306 (Ar藤)
看板C_and_CPP
標題[問題] 只想分享自己某些介面給friend
時間Thu Mar 3 11:19:47 2016
問題是這樣的
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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1456975190.A.C84.html
2F:→ Caesar08: 可以,你可以只指定某些function為friend給B 03/03 11:28
3F:→ Arton0306: 只看到A全部的private都可被access的方法 請問你指的是 03/03 12:28
4F:→ Arton0306: 哪一段?@@ 03/03 12:28
5F:→ Arton0306: 1講的是B的某些function可用A的private 2是non-member 03/03 12:32
6F:→ Arton0306: 可用A的private 但我想做的是B可用A的部份private 03/03 12:33
7F:→ Caesar08: 抱歉看錯。 如果做一個C,讓C只有那3個function 03/03 12:55
8F:→ Caesar08: 再讓A friend給C,但不要friend給B,然後C friend給B 03/03 12:55
9F:→ Caesar08: 讓B只能透過C幫忙,這樣呢? 03/03 12:56
10F:→ twitcha101: friend function?? 03/03 13:19
11F:→ Arton0306: 感謝C大和t大 應該都可以 只是介面變了會動到B的code 03/03 13:38
12F:→ testPtt: 就改成非private 03/03 13:38
13F:→ Arton0306: 最後我想 這份code本來就有點麻煩 還是不要動好了XD 03/03 13:41
14F:→ Arton0306: A因為ctor只有friend B能用 所以private和public沒差 03/03 13:45
15F:→ dritchie: pimpl? 03/04 02:12