クラスをテンプレートにしなくても、テンプレートまたは自動変数をクラスに格納する方法はありますか?私は、STL乱数ジェネレータの1つにポインタを格納しようとしていますが、クラス全体をテンプレートにすることなく、それを行う方法がわかりません。これはオプションではありません。なぜなら、cpp内のすべてのものをhファイルに移動すると、処理したくない循環ヘッダファイルがたくさんあるからです。非テンプレートクラスの任意の型のC++メンバ変数
class tSomeClass
{
public:
template<typename RNG>
tSomeClass(RNG * rng) : fRNG(rng) { }
private:
RNG * fRNG; // How do I get this working???
};
私はいつも、私は困惑してテンプレートとして、クラス全体を持つことが必要で終わりを作ってみたこれまでのすべて:だから、例えばそれは、このようなものになるだろう。
編集:私は何か言及するのを忘れていた。 STLが使用しているRNGの基底クラスを知っていなければ、基底が何であるかわからないので、継承を使用してRNG型を指定することはできません。現在、私はstd :: default_random_engineを使用しています。
なぜこのためのテンプレートが必要ですか?定期的な継承はできないでしょうか? – dasblinkenlight
¤単純に 'std :: function < double() >'を保存することができます。乾杯。 –
* ANY *タイプをRNGに保存してもよろしいですか?何とかそれを制限することはできませんか?つまり、クラスへのポインタ、プリミティブ型へのポインタなどを格納したいのですか? – Lucian