2011-01-10 3 views
2

Ich habe einige Hilfsklassen, die ich nicht im globalen Namespace haben möchte, also möchte ich sie in ihren eigenen Namespace setzen. Zum Beispiel:Kann Namespace-Muster in einer Header-Datei vermieden werden?

// Widget.h 
namespace MyHelpers { 
    class Helper { ... }; 
} 

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

// Widget.cpp 
using namespace MyHelpers; 

Foo::bar(Helper *helper) { ... } 

In in der CPP-Datei kann Helper direkt referenziert werden, während in der H-Datei, es den Namespace verwiesen wird, verwendet wird. Ist es möglich, dass die Header-Datei den "MyHelpers ::" -Baustein verliert, während MyHelpers weiterhin aus dem globalen Namespace reserviert wird?

Antwort

4

Wenn Sie viele von ihnen haben, eine Art Abkürzung in der Verwendung von Klassendeklaration erstellen:

class Foo { 
    ... 
    typedef MyHelpers::Helper Helper; 
    ... 
    void bar(Helper *helper); 
    ... 
}; 
0

Eine Alternative zu nisten die Hilfsklassen in der Hauptklasse sein könnte. Etwas wie folgt aus:

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

Dann:

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