我在全局命名空间中有一些我不想要的辅助类,所以我想将它们放在自己的命名空间中。例如:
// Widget.h
namespace MyHelpers {
class Helper { ... };
}
class Foo {
void bar(MyHelpers::Helper *helper);
}
// Widget.cpp
using namespace MyHelpers;
Foo::bar(Helper *helper) { ... }
在.cpp文件中,可以直接引用Helper,而在.h文件中,可以使用命名空间引用它。是否可以让头文件丢失“MyHelpers ::”样板,同时仍然从全局命名空间中保留MyHelpers?
答案 0 :(得分:4)
如果您有许多这些,请在using类声明中创建一个类型快捷方式:
class Foo {
...
typedef MyHelpers::Helper Helper;
...
void bar(Helper *helper);
...
};
答案 1 :(得分:0)
一种替代方法是将辅助类嵌套在主类中。 像这样:
class Foo {
public:
class Helper { ... };
void bar(Helper *helper);
}
然后:
Foo foo;
Foo::Helper helper;
foo.bar(&helper);