代码之家  ›  专栏  ›  技术社区  ›  Gergely Tomcsányi

内部类和封闭类的单独定义

  •  2
  • Gergely Tomcsányi  · 技术社区  · 7 年前

    如果封闭类具有作为内部类实例的成员变量,那么将内部类和封闭类的定义分离到不同的头文件中的正确方法是什么?

    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
    

    1 回复  |  直到 7 年前
        1
  •  3
  •   Alan Stokes    7 年前

    不可以。最好是存储一个指向内部类的指针(或者引用),这允许 Inner 不完整。这通常被称为 pImpl