0

次のコードは合法ではありません:

// .cpp file

{
  using namespace X;
  char text[] = {someENUMinX, someOtherENUMinX, ... };
}

{} ブロックをそのように使用すると、エラーが発生します。これを達成する方法は?つまり、変数宣言の一部に名前空間全体を使用できるようになります。

別の言い方をすれば、namespace を使用して取り消すことは可能ですか? 各名前空間に 40 のメンバーがあり、変数の定義中にそれらに切り替えたいと考えています。

PS .: 何度も編集してすみません。問題がある場合は、質問を削除できます。

4

2 に答える 2

2

これは便利です。.cpp では、var を定義するときに名前空間 X を使用できるため (X::someXcall())、var はグローバル名前空間でアクセスできるようになります。

これは間違っています。グローバル名前空間ではアクセスできません。行はのextern宣言ではありませんX::text。グローバル名前空間で名前がextern char text[];付けられた別の変数を宣言することです。text

さらに重要なことに、なぜそれをグローバル名前空間に置くことが望ましいのでしょうか? 名前空間を使用したいのに、最初の機会にその目的全体を無効にするのはなぜでしょうか?

于 2012-08-23T10:17:05.910 に答える
0

プログラムには、 という名前の 2 つの異なるオブジェクトがありますtext

extern char text[].h ファイルで宣言されているものは、グローバル名前空間に存在します。と同じではありませんchar text[]namespace X

于 2012-08-23T10:15:53.637 に答える