私は、コンストラクタのboost::normal_distribution
オブジェクトを初期化するクラスを持っています。このオブジェクトをメンバーに保存して、クラスの他の場所で利用できるようにするにはどうすればよいですか?私は、boostオブジェクトへのポインタを格納したいと思うが、コンストラクタを離れると、オブジェクトはスタックから解放される。だから、ヒープ上の正規分布オブジェクトを実際にnew
で割り振りたいと思うのですが、構文を正しく理解することはできません。ブースト正規分布をクラスメンバとして格納する方法
class Generator
{
private:
boost::variate_generator<boost::mt19937&,
boost::normal_distribution<> > *_var_nor;
public:
Generator(int avg_size, int stddev_size)
PhraseGenerator(size, words);
boost::mt19937 rng; // I don't seed it on purpouse (it's not relevant)
boost::normal_distribution<> nd(avg_size, stddev_size);
boost::variate_generator<boost::mt19937&,
boost::normal_distribution<> > var_nor(rng, nd);
_var_nor = &var_nor;
};
int normal_distrib_value()
{
return (*_var_nor)();
}
};
'variate_generator'はデフォルトで申し訳ありませんが – Praetorian
を構築することができない、OPは分布はコンストラクタ引数から構築したい部分を除いて、私はコンパイルされません:) –
作品を今、すべてをキャッチすることはできません。 – Praetorian