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

时间:2022-05-03
本文章向大家介绍在C++中模拟JAVA内部类的方法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

有时候我们需要把一批互相关联的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直接引用。而外部类则可以直接返回内部类的指针(引用)给使用者。

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