LINUX.ORG.RU

Инициализация template класса


0

0

Прошу помочь разобраться в следующей ситуации.

Есть: Шаблонный класс. Конструктор получает имя файла, из которого читает параметры. Один из параметров обозначает тип данных основного хранилища данных этого класса (картинки). Ну и далее данные считываются, обрабатываются и т.п. Тип данных картинки может быть понятно разным (8 типов допустимо)

Надо (ну или хочется): Чтобы при создании экземпляра класса не надо было объявлять тип данных картинок. (Блин. Во загнул. Так же вродь нельзя по идеологии шаблонов. А м.б. я забыл что?) Во всяком случае некрасиво получается, что прежде инициализации данных класса надо забежать вперед, потихоньку прочитать файло, чтоб узнать тип данных, а уж потом создавать экземпляр класса.

Помогите, пж-та. Посоветуйте, как красивее выйти из ситуации.

anonymous

разделить на два класса: один считываюет файл и другой шаблонный для работы с ним

fghj ★★★★★
()
Ответ на: комментарий от fghj

Вложенный шаблонный класс можно попробовать.

x-term ★★
()

Да тебе не шаблоны нужны, а абстрактные классы

class ImageProc
{
public:
  virtual void process(const Image& img) = 0;
}

class PNGProc : public ImageProc { ... }
class SVGProc : public ImageProc { ... }

ну и т.д.

затем делаешь фабрику объектов:

template <typename T, typename N>
class Factory 
{
  T* create(N id);
}

которая будет тебе объекты создавать по прочитанным типам.

Begemoth ★★★★★
()

Большое Спасибо, ребята, за советы.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.