Допустим, у нас есть шаблонный класс (я назову его TileCreator ), основанный на другом классе Tile . В некоторых случаях конструктору класса Tile требуются параметры для инициализации. Теперь класс TileCreator будет создавать множество объектов Tile , поэтому я хотел бы сохранить необходимые параметры в виде переменной-члена в TileCreator .
Есть ли хороший подход для этого? Как я могу сообщить своему шаблонному коду, какие типы и сколько этих параметров?
Мой единственный подход состоит в том, чтобы использовать указатель void *, который указывает на него, однако тогда мне потребуется вручную выделить и освободить память каждый раз?
В идеале это должно работать так:
template<class Tile> class TileCreator {
public:
void CreateNew() {
Tile tile(par);
}
void setPar(void* par) {
this->par = par;
}
private:
void* par;
};
class Cake {
public:
Cake(int sugar, bool chocolate) {
// ...
}
};
int main() {
TileCreator<Cake> baker;
// baker.setPar(over 9000, true); obviously doesnt work like this
return 0;
}
Мне нужно было бы выделить структуру, которая содержит все параметры, и дать ее указатель, а затем добавить конструктор для каждого возможного Tile в правильно прочитайте структуру и освободите ее.
Я надеюсь, что есть более элегантное решение для этого!