2017-07-05 12 views
1

パラメータクラスメンバーがNonStaticFooではないStaticFooで静的ですが、それ以外は同一ある二つのクラス、StaticFooNonStaticFooを、想像してみてください。
簡単な例:クラスのメンバーは

class StaticFoo { 
    static void bar(); 
    static int v; 
}; 

class NonStaticFoo { 
    void bar(); 
    int v; 
}; 

は、それがコードの重複を避けるために、テンプレートクラスFooを考慮することは可能ですか?
だから、その後1だけ

using StaticFoo = Foo<true>; 
using NonStaticFoo = Foo<false>; 
+1

「静的クラスは、」C++で非常に良い習慣ではありません。名前空間を使用する。 – Rakete1111

+3

なぜあなたはこれをしたいですか?解決したい*実際の問題は何ですか? [XY問題](http://xyproblem.info/)を読んで質問がどのように適合しているかをよく考えてください。 –

+0

@Someprogrammerdude現在、コードベース内のどこにでも静的に使用されているが、静的ではないクラスに変換したいと思う特定の型の「テンプレート」登録者クラスと考えることができます。 – oLen

答えて

2

のようなものは、コードの重複を避けるために、テンプレートクラスFooのを考慮することが可能です使用することができますか?

あなたがstatic(false)ような何かを言うことができないので、残念ながらstaticnoexceptような式によってパラメータ化されていない「無」

は、ありません。あなたは、あなたが専門でstaticメンバーを持つことができるようなテンプレートを特化することを強制しているマクロを使用せずに

template<bool = false> 
class Foo{ 
    void bar(); 
    int v; 
}; 
template<> 
class Foo<true>{ 
    static void bar(); 
    static int v; 
}; 
関連する問題