C++中的forward declaration可以减少文件之间的依赖,加快编译速度。
在相同的namespace中,例如类B包含一个指向类A的指针或引用,类A的forward declaration写法如下:
// b.hclass A; class B { A *pa; };
今天遇到一个问题,就是A和B在不同的namespace中,不能按上面的写法来写。
正确的写法是在B的头文件写出A所在的namespace然后把前置声明放进去,写法如下:
// a.hnamespace top { namespace first { class A {}; } } // b.h namespace top { // forward declaration of class A namespace first { class A; } namespace second { class B { first::A *pa; }; } }
时间: 2024-10-31 05:01:33