在我的新项目中,我正在构建一个数据管理模块。
template<typename T>
class Data
{
public:
T getValue();
private:
boost::numeric::ublas::matrix<T> data;
}
我的目标是,用一些不同的分配器(如boost.inter-process分配器或boost.pool分配器)来更改数据分配器(boost-ublas矩阵和vector类将分配器作为模板参数)。并且只给一个类和工厂方法来创建适当的分配器。虚拟基类可能很好,但我可以无法处理如何与模板一起使用。您提供哪种设计模式或解决方案?
编辑:
我将使用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;
}