2

我在全局命名空间中有一些我不想要的辅助类,所以我想把它们放在自己的命名空间中。例如:

// 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?

4

2 回答 2

4

如果你有很多这些,在 using 类声明中创建一个类型快捷方式:

class Foo {
    ...
    typedef MyHelpers::Helper Helper;
    ...
    void bar(Helper *helper);
    ...
};
于 2011-01-10T19:56:52.093 回答
0

一种替代方法是将辅助类嵌套在主类中。像这样的东西:

class Foo {
public:
    class Helper { ... };
    void bar(Helper *helper);
}

然后:

Foo foo;
Foo::Helper helper;
foo.bar(&helper);
于 2011-01-10T23:25:46.527 回答