Здравствуйте, Left2, Вы писали:
L>Я не понял зачем параметризовать параметрами открытия шаблон? L>В моём понимании параметры открытия должны быть параметрами конструктора. L>Иначе (пример грубый) — если у тебя функция принимает файл, то тебе прийдётся явно указывать в параметрах функции что этот файл должен быть FileOpening::OpenExisting.
Передавать параметры открытия конструктору, это привычка кодирования в стиле Си, объясните зачем передавать в конструктор или еще куда либо константы известные на этапе компиляции ?
Константы должны появится только один раз, в том месте где без них не обойтись, а проталкивать их по стеку не могу найти причину.
По отношению к файлу имеется ограниченный набор флагов для его открытия, читая Александреску раскладываем все варианты на стратегии и параметризуем ими шаблон. Указывая в параметрах функции что этот файл должен быть FileOpening::OpenExisting уже по объявлению легче определить что функция делает с файлом, она создает, удаляет или модифицирует существующий файл, весьма удобно.