私が持っているとしましょう
template< unsigned int num >
class SomeFunctionality
{
static unsigned int DoSomething()
{
//...
}
static void DoSomethingElse()
{
}
};
typedef SomeFunctionality<6> SomeFunctionalityFor6;
意味的には、「SomeFunctionalityFor6」は本質的にテンプレート引数6に固有の名前空間です。したがって、コードでは、実行する代わりに、テンプレートのこのインスタンスを使用します。
int main()
{
SomeFunctionalityFor6::DoSomething();
}
むしろ、実際の名前空間で「using」ステートメントを使用する機能が必要です。
int main()
{
using SomeFunctionalityFor6;
DoSomething();
}
これは、私が思うに、うまくいきません。Visual Studioは、usingステートメントの後に「namespace」キーワードで定義された名前空間が必要であると文句を言います。
とにかく私がやろうとしていることをすることはありますか?主に、静的メソッドを呼び出すたびに名前空間を完全に修飾したくありません。私はそのほとんどが単なる構文糖衣であることを知っていますが、私の意見では、コードをはるかに読みやすくすることができます。「class」キーワードを使用する代わりに、名前空間を直接テンプレート化する方法さえあるのだろうかと思います。