Специализация и инициализация шаблонов — как это упростить? [closed]

Я пытаюсь использовать шаблоны для настройки поля структуры, и я хотел бы знать способ упростить часть B следующего кода. Код выглядит избыточным в том смысле, что мне нужно написать SinePulse несколько раз, также было бы лучше, если бы (по умолчанию) инициализация fx был перенесен исключительно на метод setupField()
Обратите внимание, что переменная fx должен быть доступен для других методов, но инициализацию нужно отложить, так как параметры (заглушки) (1., 0.) и их точное количество ранее неизвестны.

template <typename Envelope, typename Pulse>
struct Field
{
    Envelope* env;
    Pulse* pul;
    Field()
    {
    }

    Field(Pulse* p, Envelope* e)
    {
        env = p;
        pul = e;
    }
    double operator()(double time)
    {
        return (*env)(time) * (*pul)(time);
    }
};
//PART B
Field<SinePulse, SinePulse> fx;
void setupField()
{
    fx = Field<SinePulse, SinePulse>(new SinePulse(1., 0.), new SinePulse(1., 0.));
}
```

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *