How to forward declare a class which is in a namespace

后端 未结 3 1880
没有蜡笔的小新
没有蜡笔的小新 2020-11-27 17:38

I am trying to use forward declarations in header files to reduce #includes used and hence reduce dependencies where users include my header file.

However, I am unab

3条回答
  •  無奈伤痛
    2020-11-27 18:06

    Apart to forward-declare the class from within its namespace (as @billz says), remember to either use (prepend) that namespace when referring to the forward-declared class, or add a using clause:

    // B.h
    namespace Y { class A; } // full declaration of
    // class A elsewhere
    
    namespace X {
        using Y::A;   // <------------- [!]
        class B {
            A* a; // Y::A
        };
    }
    

    Ref: Namespaces and Forward Class Declarations

提交回复
热议问题