パック(。私はこの質問に名前を付けると私は似た何かを見つけることができませんでしたかわからなかった申し訳ありませんが、これは重複している場合)C++:パラメータを使用して、変数の型パラメータを持つテンプレートクラスの継承が
私は継承したい場合いくつかの基本テンプレートクラスから、私はこのような方法行うことができます。
template<typename A=int, typename B=char> class C {};
template<typename... Args> class D : public C<Args...> {}; //it works!
を私はプロジェクトに変更することができますこの方法は、テンプレートクラスCにパラメータを渡すと、私はクラスD.グレートのすべての使用法を変更する必要はありません。しかし、パラメータとして型だけでなく値も使用するテンプレートクラスがあればどうでしょうか?例:
template<int dim=3, typename float_t=double> class GeometricObject{};
template<typename... Args> class Point : public GeometricObject<Args...>{}; //it doesnt work
もちろん、最初に整数型の最後のテンプレートを定義できます。しかし、これは方法ではありません.GeometricObjectから継承した100種類のクラスがある場合、デフォルトのdim
の値を2に変更すると、すべての単一クラス定義を変更する必要があります。
また、#define
、#else
などのプリプロセッサコマンドを使用しない方法があることを願っています。実際にはテンプレートもプリプロセッサコマンドであることはわかっていますが...ここでは現代的にしようとします)
は型パラメータから分離され、あなたの価値のパラメータであり、すなわち値のパラメータは、常にこの 'テンプレート '? –
それは可能性があります。私は一般的な答えがわからない場合は、特定の答えも良いです:) – Ch3shire
あなたは特殊なテンプレートを直接渡して、適切なtypedefでパラメータパックにアクセスできませんか? – Rerito