できません。 最も汚染に少なくとも汚染から、
今
// The stuff you want to use.
namespace foo { namespace bar {
class Frob {};
} }
:標準は、いくつかのあまり良い選択肢を提供しています。
typedef
は、あなたのクラス定義の
private
セクションでそのエイリアスを書くことを可能にする:
// I)
class Schwarzschild {
typedef foo::bar::Frob FbFrob;
public: Schwarzschild() : a(FbFrob()), b(FbFrob()) {}
private: FbFrob a,b,c;
};
しかし、あなたはまた、ユニット・グローバルそれを使用することができますが、チャンスでそれをリネームする:
// II)
class Schwarzschild {
public: Schwarzschild();
private: foo::bar::Frob a,b,c;
};
// cxx-file
typedef foo::bar::Frob FbFrob;
Scharzschild::Scharzschild() : a(FbFrob()) {}
することもできますエイリアスの名前空間:
// III)
namespace fb = foo::bar;
class Planck {
public: Planck() : a(fb::Frob()), b(fb::Frob()) {}
private: fb::Frob a,b,c;
};
// IV)
using foo::bar::Frob;
class Mach {
public: Mach() : a(Frob()), b(Frob()) {}
private: Frob a,b,c;
};
ただ、完全を期すために、最も汚染ソリューションはusing namespace
です:それとも、桜、あなたのFrob
は、翻訳のあなたのユニット内の別のFrob
と衝突する可能性が不利で、他の名前空間からのシンボルを選ぶことができます。
// V)
using namespace foo::bar;
class Newton {
public: Newton() : a(Frob()), b(Frob()) {}
private: Frob a,b,c;
};
注意III、IVおよびVはまた、シュバルツシルト-の例のように、あなたのCXXファイルに限定することができます。
どのような言語ですか?適切なタグを付けてください。 –
申し訳ありませんトマシュ、コメントに感謝します。 C++タグを追加するように編集しました。 – Ant
C++の文法要素 "initializer-list"は何か(集約初期化子の '{} 'の間の部分)なので、混乱を避けるため、" ctor-initializer "と呼ぶべきです。そして、それを使用してファイルの残りの部分を「汚染」するのはどうなのですか?それはあなたの.cxxファイルであり、ヘッダーではありません。もう一つの選択肢は、 'nsConstants :: ONE;'を使うことですが、あなたが望むものはできません。 – PlasmaHH