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

作者: Arton0306 (Ar藤)   2016-03-03 11:19:47
問題是這樣的
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就好嗎?
作者: Caesar08 (Caesar)   2016-03-03 11:27:00
http://en.cppreference.com/w/cpp/language/friend可以,你可以只指定某些function為friend給B
作者: Arton0306 (Ar藤)   2016-03-03 12:28:00
只看到A全部的private都可被access的方法 請問你指的是哪一段?@@1講的是B的某些function可用A的private 2是non-member可用A的private 但我想做的是B可用A的部份private
作者: Caesar08 (Caesar)   2016-03-03 12:55:00
抱歉看錯。 如果做一個C,讓C只有那3個function再讓A friend給C,但不要friend給B,然後C friend給B讓B只能透過C幫忙,這樣呢?
作者: twitcha101 (twitch)   2016-03-03 13:19:00
friend function??
作者: Arton0306 (Ar藤)   2016-03-03 13:38:00
感謝C大和t大 應該都可以 只是介面變了會動到B的code
作者: testPtt (測試)   2016-03-03 13:38:00
就改成非private
作者: Arton0306 (Ar藤)   2016-03-03 13:41:00
最後我想 這份code本來就有點麻煩 還是不要動好了XDA因為ctor只有friend B能用 所以private和public沒差
作者: dritchie (卍~邁斯納效應~卍)   2016-03-04 02:12:00
pimpl?

Links booklink

Contact Us: admin [ a t ] ucptt.com