随意的在头文件中包含其它头文件容易产生循环依赖。如果一个头文件需要包含其它头文件才能工作的话,就会增加交流障碍,给头文件的用户增添不必要的负担。
头文件中如果能用前向声明解决,那么就不要包含定义。头文件互相依赖有碍于模块性,是大型项目的祸根。
注意:
当两个类在不同的命名空间,但是又需要互相依赖的情况下,可以这样写:
//file1.h
namespace nameSpace1
{
ClassA
{
…
};
}
//file2.h
namespace nameSpace1
{
Class A;
}
namespace nameSpace2
{
UsingnameSpace1::A;
ClassB
{
…
Private:
A *a;
};
}