[英]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.