单独定义内部 class 和封闭 class

Separate definition of inner class and enclosing class

如果封闭的 class 有一个成员,将内部 class 和封闭的 class 的定义分离到不同的 header 文件中的正确方法是什么变量是内部 class?

的一个实例

这里是 Outer 的 header(封闭的 class):

//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的header:

//inner.h
#ifndef INNER_H_INCLUDED
#define INNER_H_INCLUDED

#include "outer.h"

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

#endif

这不会编译。问题是两个 classes 必须看到彼此的定义。是否可以打破循环依赖并仍然保持定义分离?

没有。您可以做的最好的事情是存储指向内部 class 的指针(或者可能是引用),这允许 Inner 不完整。这通常被称为 pImpl 成语。