В моем новом проекте я создаю модуль управления данными. Я хочу дать простой тип хранилища шаблонов верхним уровням, таким как
template<typename T>
class Data
{
public:
T getValue();
private:
boost::numeric::ublas::matrix<T> data;
}
Моя цель состоит в том, чтобы изменить распределитель данных с помощью различных распределителей, таких как распределитель процесса Boost.inter или распределитель Boost.pool (матрица Boost Ublas и векторные классы принимают выделитель в качестве параметра шаблона). И дают только один класс и фабрику. Метод создания соответствующего распределителя под прикрытием. Виртуальный базовый класс может быть приятным, но я не могу понять, как использовать его с шаблонами. Какие шаблоны проектирования или решения вы предлагаете?
Edit:
Я буду использовать boost.pool и boost.shared_memory_allocator. Вкратце я хочу иметь разные классы с разными стратегиями распределения. Но моя точка зрения заключается в том, что верхние части программы не должны знать об этом. Реальная задача для меня - собрать разные шаблоны. классы с одинаковыми базовыми классами.
Edit:
Для тех, кто хочет использовать матричный класс с пользовательским распределителем.
это так:
using boost::numeric::ublas;
template<typename T, class Allocator = boost::pool_allocator<T>>
class
{
public:
matrix<T, row_major, std::vector<T,Allocator>> mData;
}