[问题] 只想分享自己某些接口给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