[C++]命名空间不同的两个类,如何在头文件中做声明

原文作者:@玄冬Wong

问题是这样的,有两个类,且两个类所属命名空间不一样:

namespace NA
{
	class A
	{
	}
}
namespace NB
{
	class B
	{
	}
}

假设B类中有个A的成员变量,然后我们又不想在B类头文件中引用A类的头文件(为了加快编译速度)。

如果是两个都没有命名空间的类,那么好办:

class A;

class B
{
	A* val;
}

如果有命名空间了,且命名空间不同,那么命名空间如何处理?

方式如下:

namespace NA
{
	class A;
}

namespace NB
{
	class B
	{
		A* val;
	}
}

 这样就能在B类头文件中不用引用A的头文件了。

再说一种情况,如果A类和B类命名空间相同,方式如下:

namespace NB
{
	class A;
	
	class B
	{
		A* val;
	}
}

猜你喜欢

转载自aigo.iteye.com/blog/2290562