У меня есть особая ситуация, когда у меня есть объект, на котором я хочу использовать форсированные генераторы случайных чисел, и это привело к большему вопросу, на который я не могу ответить.Вот пример кода того, что я пытаюсь создать.
Сначала мой заголовок:
Class MyObject {
protected:
double some variable;
boost::random::mt19937 rgenerator;
boost::uniform_real<double> dist_0_1;
boost::variate_generator< boost::mt19937&, boost::uniform_real<double> > rand01
}
Теперь я хочу сделать следующее:
Class MyObject {
protected:
double some variable;
boost::random::mt19937 rgenerator(std::time(0)); //initialize to a "random" seed
boost::uniform_real<double> dist_0_1(0,1); //set the distribution to 0-1
boost::variate_generator< boost::mt19937&, boost::uniform_real<double> > rand01(rgenerator, dist_0_1);//tell it to use the above two objects
}
Но это не работает, потому что это в заголовке.Я подумал, что мог бы использовать конструктор MyObject, чтобы каким-то образом вызывать конструкторы для различных подобъектов (распределение, генератор, но я не могу понять, как. К тому времени, когда вызывается конструктор MyObject, суб-объекты по умолчаниюконструкторы уже были вызваны, и я не обнаружил, что у них есть методы-члены для сброса этих свойств ... кроме того, это не тот момент, когда я запутался. Теперь, может быть, происходит слишком много вещей, и я 'Это запутанные проблемы, но, насколько я могу судить, моя проблема сводится к следующему детскому примеру:
Class Tree {
Tree();
Tree(int);
protected:
fruit apples(int);
}
Tree::Tree() {
apples(0); //won't work because we can't call the constructor again?
}
Tree::Tree(int fruit_num) {
apples(fruit_num); //won't work because we can't call the constructor again?
}
Class Fruit {
public:
Fruit();
Fruit(int);
protected:
int number_of_fruit;
}
Fruit::Fruit() {
number_of_fruit = 0;
}
Fruit::Fruit(int number) {
number_of_fruit = number;
}
Я уверен, что это вторая натура для всех остальных, но я не могунайдите статью, в которой рассказывается о наилучшей практике инициализации объектов-членов объекта значением конструктора, отличного от заданного по умолчанию.