如何在头文件中声明命名空间别名,然后在源文件中使用它?

时间:2011-11-08 16:52:51

标签: c++ namespaces

我想在头文件中放置一个名称空间别名(即名称空间A = B :: C),这样我就可以在源文件中使用它,但编译器只是告诉我它的“不是命名空间名称”。有什么想法吗?

这是我正在尝试做的一个非常简化的例子...

头文件:

namespace A{
namespace B{
int getInt();
}
}

namespace AB = A::B;

source file:

#include "header_file.h"
#include <iostream>

int AB::getInt(){ // Error "AB is not a namespace name"
return 123;
}

2 个答案:

答案 0 :(得分:2)

您需要在头文件中包含声明命名空间的文件,或者注释说这样做:

namespace B { namespace C { } }
namespace A = B::C;

答案 1 :(得分:1)

在创建别名时,编译器必须已经看到别名命名空间。

因此,您必须#include包含所述命名空间的文件,或者您必须执行此操作:

// "Forward Declaring" the namespace
namespace B { namespace C { } }

namespace A = B::C;