在我的新项目中,我正在构建一个数据管理模块。我想为上层提供一个简单的模板存储类型,例如
template<typename T>
class Data
{
public:
T getValue();
private:
boost::numeric::ublas::matrix<T> data;
}
我的目标是,用一些不同的分配器更改数据分配器,例如 Boost.inter 进程分配器或 Boost.pool 分配器(Boost Ublas 矩阵和向量类将分配器作为模板参数)。并且只提供一个类和工厂方法来创建适当的分配器。虚拟基类可能很甜蜜,但我无法处理如何将它与模板一起使用。你们提供什么样的设计模式或解决方案?
编辑:
我将使用 boost.pool 和 boost.shared_memory_allocator。简而言之,我想拥有具有不同分配策略的不同类。但我的观点是程序的上层部分应该对此一无所知。对我来说真正的挑战是收集不同的模板类相同的基类。
编辑:对于想要将矩阵类与自定义分配器一起使用的人。
是这样的:
using boost::numeric::ublas;
template<typename T, class Allocator = boost::pool_allocator<T>>
class
{
public:
matrix<T, row_major, std::vector<T,Allocator>> mData;
}