1

いくつかの型定義を含む小さな名前空間があり、これを使用してコードをよりきれいに見せます。ただし、これらのタイプのいずれかを使用するすべてのファイルに「using namespace ...」行を追加する必要はありません。ファイルに #include を追加する必要があるからです。


MyFile.cpp:

#include "typedefs.h"
void Bob()
{
    IntList^ list = gcnew IntList;
}

typedefs.h:

namespace Typedefs
{
    typedef List<int> IntList;
    typedef array<int> IntArray;
    typedef List<Byte> ByteList;
    typedef array<Byte> ByteArray;
    typedef List<String^> StringList;
    typedef array<String^> StringArray;
}
using namespace Typedefs;

名前空間宣言の直後に「using namespace」行を追加してもよろしいですか? そうでない場合、なぜですか?

4

4 に答える 4

3

可能ですが、賢明ではないと思います。名前空間の内容をどこにでも公開することで、名前空間の目的全体を無効にするだけです。Typedefs::orusing Typedefs::xxx;またはを指定する必要がないという快適さが必要な場合はusing namespace Typedefs;、名前空間をまったく作成しません。

于 2009-02-11T10:54:45.017 に答える
2

unnamednamespace を使用します。ヘッダーを含めたファイルにのみ名前を表示したい場合

namespace {
  int i = 10;
}

上記は以下のコードと同じ効果があります

namespace randomName {
  int i = 10;
}
using randomName; 

そのため、他のファイルからは何もアクセスできません。

于 2009-02-11T10:59:01.930 に答える
1

「名前空間 XXX を使用する;」を置く ディレクティブをヘッダー ファイルに追加することは、そもそも名前空間を持つという考えを無効にするため、通常は悪い考えと見なされます。名前空間の導入によって回避されるはずの名前の競合が簡単に発生する可能性があります。

私のアドバイス - 必要に応じて、代わりに適切なソース ファイル (.cpp) に貼り付けてください。

于 2009-02-11T10:57:04.340 に答える
0

名前空間の外側で新しい型を定義することもできますか、それとも何か不足していますか?

于 2009-02-11T10:56:46.803 に答える