1. 程式人生 > 其它 >在C++中模擬JAVA內部類的方法

在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直接引用。而外部類則可以直接返回內部類的指標(引用)給使用者。

==歡迎關注本公眾號,專注遊戲伺服器端開發技術==