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

代替手段の 1 つは、ヘルパー クラスをメイン クラス内にネストすることです。このようなもの:

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

それで:

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