如果封闭类有一个作为内部类实例的成员变量,将内部类和封闭类的定义分离到不同的头文件中的正确方法是什么?
这是Outer
(封闭类)的 header :
//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
习惯用法。
关于c++ - 内部类和封闭类分开定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46382406/