2011-01-10 63 views
2

我有一些我不想在全局命名空間中使用的助手類,所以我想把它們放在它們自己的命名空間中。例如:是否可以避免頭文件中的命名空間樣板文件?

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

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

// Widget.cpp 
using namespace MyHelpers; 

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

在.cpp文件,助手可以直接引用,而在h文件,它使用命名空間被引用。是否有可能讓頭文件丟失「MyHelpers ::」樣板文件,同時仍然從全局命名空間保留MyHelpers?

回答

4

如果你有很多這樣的,創建一個快捷方式類的使用類聲明中:

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

一種選擇可能是鳥巢的主類中的輔助類。 事情是這樣的:

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

然後:

Foo foo; 
Foo::Helper helper; 
foo.bar(&helper); 
相關問題