Полиморфизм, когда только один подкласс меняет методC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Полиморфизм, когда только один подкласс меняет метод

Сообщение Anonymous »

У меня есть базовый класс (

Код: Выделить всё

IDistribution
) с помощью простого виртуального метода Generate().
Теперь я хочу определить все типы дистрибутивов, поэтому я создаю класс для каждого дистрибутива и внутри него. класс, у меня есть разные типы данных, например:
в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»