Можно ли избежать шаблона пространства имен в заголовочном файле? - PullRequest
2 голосов
/ 10 января 2011

У меня есть несколько вспомогательных классов, которые мне не нужны в глобальном пространстве имен, поэтому я хочу поместить их в их собственное пространство имен.Например:

// 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 из глобального пространства имен?

Ответы [ 2 ]

4 голосов
/ 10 января 2011

Если у вас их много, создайте ярлык типа внутри объявления класса using:

class Foo {
    ...
    typedef MyHelpers::Helper Helper;
    ...
    void bar(Helper *helper);
    ...
};
0 голосов
/ 11 января 2011

Одной из альтернатив может быть вложение вспомогательных классов в основной класс. Примерно так:

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

Тогда:

Foo foo;
Foo::Helper helper;
foo.bar(&helper);
...