有时候我们需要把一批互相关联的API用不同的类提供给用户,以便简化每个类的使用难度。但是这样这些类之间的数据共享就成了问题。JAVA的内部类可以自由的访问外围类的所有数据,所以很时候做这的工作,而如果C++也这样做,就变成要增加很多setter和getter。但是,也可以用以下方法模拟实现:
首先,你的内部类头文件一般是被外围类所#include的,所以需要在内部类的声明前增加“前置声明”:
namespace outerspace{
class OuterClass;
}
然后,再设置一个指向外部类的指针:
private:
OuterClass* outer_obj;
最后,让外部类是内部类的友元:
friend outerspace::OuterClass;
以上是内部类的设定,外部类就很简单,只需要保存内部类的指针,然后设置好内部类为友元就可以了:
friend InnerClass;
private:
InnerClass inner_obj;
外部类则需要在初始化过程中设置ineer_obj的outer_obj值:
inner_obj->outer_obj = this;
在设计API的过程中,内部类需要用到外部类任何成员,包括是private的,都可以用 outer_obj->XXX直接引用。而外部类则可以直接返回内部类的指针(引用)给使用者。
==欢迎关注本公众号,专注游戏服务器端开发技术==
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有