web-dev-qa-db-ja.com

名前空間の名前変更

私は長い間C++をやっていますが、今朝、「C++で名前空間のエイリアスを作成することは可能ですか?」という質問に答えることができませんでした。

例を挙げましょう。次のヘッダーがあったとしましょう。

namespace old
{
  class SomeClass {};
}

これは、不特定の理由により、次のようにならなければなりませんでした。

namespace _new
{
  namespace nested
  {
    class SomeClass {}; // SomeClass hasn't changed
  }
}

これで、SomeClassを参照する古いコードベースがある場合、次を追加することで、変更をすばやく(そして汚く)「修正」できます。

namespace old
{
  typedef _new::nested::SomeClass SomeClass;
}

しかし、明示的にすべてのタイプをoldする必要なしに、_new::nestedからtypedefすべてをインポートする方法はありますか?

Python import * from ...に似たもの。

ありがとうございました。

27
ereOn
using namespace new::nested;

イデオネでの例

または、実際に実際のエイリアスが必要な場合:

namespace on = one::nested;

イデオネの例

54
Xeo

この:

namespace old = newns::nested;

あなたが望むもののように思われるでしょう。

31