问题描述
有什么方法可以将所有内容全部放入命名空间的头文件中的函数,而无需更改头本身? 例如,如果我有一个名为“ funcs.h”的头文件,该头文件中包含一些功能,是否可以在不更改“ funcs.h”的情况下将所有功能放入命名空间?
谢谢!
解决方法
我的第一个想法是一些肮脏的骇客,但没有理由使用骇客。
假设您在全局范围内定义了一个函数(实际上,我在示例中使用了一个重载集,并且它是否在标头中无关紧要):
void foo() {}
void foo(int) {}
您可以通过using
从名称空间中对其进行访问:
namespace ns {
using ::foo;
}
int main() {
ns::foo();
ns::foo(1);
}
请注意,您现在有ns::foo
和::foo
都引用相同的函数(分别是重载集)。