前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在C++中模拟JAVA内部类的方法

在C++中模拟JAVA内部类的方法

作者头像
韩伟
发布2018-03-05 15:13:00
1.9K0
发布2018-03-05 15:13:00
举报
文章被收录于专栏:韩伟的专栏韩伟的专栏

有时候我们需要把一批互相关联的API用不同的类提供给用户,以便简化每个类的使用难度。但是这样这些类之间的数据共享就成了问题。JAVA的内部类可以自由的访问外围类的所有数据,所以很时候做这的工作,而如果C++也这样做,就变成要增加很多setter和getter。但是,也可以用以下方法模拟实现:

首先,你的内部类头文件一般是被外围类所#include的,所以需要在内部类的声明前增加“前置声明”:

代码语言:javascript
复制
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直接引用。而外部类则可以直接返回内部类的指针(引用)给使用者。

==欢迎关注本公众号,专注游戏服务器端开发技术==

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 韩大 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档