namespace HogeCore {} namespace Hoge = HogeCore;
しかし、複数の名前空間に同じ別名を与えることはできません。
namespace HogeCore {} namespace HogeGraphics {} namespace HogeAudio {} namespace Hoge = HogeCore; namespace Hoge = HogeGraphics; // コンパイルエラー namespace Hoge = HogeAudio; // コンパイルエラー
ちなみにサンプルコードの意図としては、Hogeというライブラリの内部に複数の名前空間が存在し、ライブラリのユーザーにはすべてHogeという名前(名前空間)でアクセスできるようにさせたい、というものです。
C++では複数の名前空間に同じ別名を与えることはできませんが、別の方法で実質的に同じようなことを行うことができます。その別の方法とは、別名用の名前空間を作り、そのなかでusing namespace
を使うことです。
namespace HogeCore { class A{}; } namespace HogeGraphics { class B{}; } namespace HogeAudio { class C{}; } // 別名用の名前空間を作り… namespace Hoge { // 使用可能にしたい名前空間をusing namespaceする using namespace HogeCore; using namespace HogeGraphics; using namespace HogeAudio; } int main() { Hoge::A a; Hoge::B b; Hoge::C c; return 0; }
注意点としては、名前空間を1つにまとめることで名前の衝突が起こる可能性があります。乱用はしないようにしましょう。
参考: c++ - Multiple aliases for a namespace? - Stack Overflow