Код: Выделить всё
IDistributionТеперь я хочу определить все типы дистрибутивов, поэтому я создаю класс для каждого дистрибутива и внутри него. класс, у меня есть разные типы данных, например:
в UniformDistribution у меня есть Uniform_distribution и его параметры из библиотеки random.h, в ExpontiolDistribution я есть exponentiol_distribution и так далее...
Проблема в том, что тело виртуального метода представляет собой тот же подкласс foreach, что и : distribution(generate);
кроме формы RandomDisttribution, где Generate() имеет другую реализацию.
Код: Выделить всё
class IDistribution {
public:
default_random_device rng;
virtual void generate() = 0;
}
class UniformDistribution : IDistribution {
private:
uniform_distribution dist;
public:
virtual void generate() {
dist(rng());
};
}
class ExponentialDistribution : IDistribution {
private:
exponential_distribution dist;
public:
virtual void generate() {
dist(rng());
};
}
class RandomDistribution : IDistribution {
public:
virtual void generate() {
/*Other implementaion*/
};
}
Редактировать: (я решаю, какой тип распределения я хочу во время выполнения)
Подробнее здесь: https://stackoverflow.com/questions/782 ... the-method
Мобильная версия