p-a-h-a
Member
Здравствуйте. Создаю библиотеку для хранения практически любых типов данных в файле LittleFS включая STL контейнеры (std::vector, std::list, std::unordered_map и т.д.)
В связи с множественными типами переменных и контейнеров наплодилось много перегрузок методов, которые вызывают один и тот же метод. Прошу помощи в упрощении.
Файл библиотеки находится по ссылке.
Запись в файла примитивов (int, byte ...) обрабатывает метод:
Все контейнеры STL записывает в файл метод:
Но он выглядит так же как и для примитивов. Поэтому для каждого контейнера прописана перегрузка метода write, вызывающая метод writeContainer:
Контейнеров много, это часть перегрузки метода принимающего их. Подобная ситуация и с чтением из файла.
Вопрос как избавиться от множества подобных перегрузок метода write?
Вопрос № 2. Поскольку клас "StorageManager" шаблонный, реализация всех методов описана в заголовочном файле h. Нужно ли делать отдельный cpp файл реализации или оставить все в хэдере? Если нужно, то как это делается с шаблонными класами, может подскажите пример стандартной библиотеки чтоб подсмотреть и где об этом почитать. Спасибо.
PS: делаю эту библиотеку т.к. хочу дальше изучать С++ и практикуюсь со стандартной библиотекой STL.
В связи с множественными типами переменных и контейнеров наплодилось много перегрузок методов, которые вызывают один и тот же метод. Прошу помощи в упрощении.
Файл библиотеки находится по ссылке.
Запись в файла примитивов (int, byte ...) обрабатывает метод:
Код:
template <typename T>
bool write(const T &data) const;
C++:
template <typename T>
bool writeContainer(const T &container) const;
C++:
template <typename T>
bool write(const std::vector<T> &container);
template <typename T>
bool write(const std::list<T> &container);
template <typename T>
bool write(const std::deque<T> &container);
template <typename T>
bool write(const std::set<T> &container);//...........
Вопрос как избавиться от множества подобных перегрузок метода write?
Вопрос № 2. Поскольку клас "StorageManager" шаблонный, реализация всех методов описана в заголовочном файле h. Нужно ли делать отдельный cpp файл реализации или оставить все в хэдере? Если нужно, то как это делается с шаблонными класами, может подскажите пример стандартной библиотеки чтоб подсмотреть и где об этом почитать. Спасибо.
PS: делаю эту библиотеку т.к. хочу дальше изучать С++ и практикуюсь со стандартной библиотекой STL.