簡體   English   中英

內部類和封閉類的單獨定義

[英]Separate definition of inner class and enclosing class

如果封閉類的成員變量是內部類的實例,將內部類和封閉類的定義分隔到不同的頭文件中的正確方法是什么?

這是Outer (封閉類)的頭:

//outer.h
#ifndef OUTER_H_INCLUDED
#define OUTER_H_INCLUDED

#include "inner.h"

class Outer
{
    class Inner;

public:
    /* public member functions */

private:        
    Inner inner_instance;
};

#endif

Inner的標題:

//inner.h
#ifndef INNER_H_INCLUDED
#define INNER_H_INCLUDED

#include "outer.h"

class Outer::Inner
{
    /* definition */
};

#endif

這不會編譯。 問題在於兩個類都必須看到彼此的定義。 是否有可能打破循環依賴關系並仍將定義分隔開?

不能。您所能做的最好是存儲指向內部類的指針(或引用),這使Inner不完整。 這通常被稱為pImpl成語。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM