在我的新项目我建立一个数据管理module.I想给一个简单的模板存储类型上层像

template<typename T>
class Data
{
 public:
  T getValue();
 private:

 boost::numeric::ublas::matrix<T> data;
}

我的目标是,以改变数据的分配器与一些不同的分配器等Boost.inter过程分配器或分配器Boost.pool(升压的uBLAS矩阵与矢量的类需要分配器作为模板参数)。而只给出一个单一的类和厂方法来创建下cover.A虚基类的适当分配器可以是甜的,但我不能处理如何与templates.What种设计模式或解决方案使用你们提供?

编辑:

我会用boost.pool和boost.shared_memory_allocator.Briefly我想有不同的班级,不同的分配strategies.But我的观点是程序上的部分应该没有关于it.Real挑战的知识对我来说就是收集不同的模板类具有相同的基类。

编辑: 对于一个谁想要使用矩阵类自定义分配器。

它是这样的:

 using boost::numeric::ublas;

    template<typename T, class Allocator = boost::pool_allocator<T>>
    class
    {      
      public:
      matrix<T, row_major, std::vector<T,Allocator>> mData;
    }
有帮助吗?

解决方案

目前还不清楚你想要什么,但在黑暗中拍摄,是下面有帮助吗?

template<typename T>
class IData
{
 public:
  virtual T getValue() = 0;
  virtual ~IData() {}
};

template<typename T, typename Allocator=std::allocator<T> >
class Data : public IData<T>
{
 public:
  virtual T getValue();
 private:

 boost::numeric::ublas::matrix<T, Allocator> data;
}

其他提示

您试图在基于类型的编译时间换分配器?你需要一个if-else模板和一些allocator类(模板)的定义。

如果你想运行分配器,那么它更容易:你把基类(接口定义类)的模板,并通过适当的子类根据您需要满足什么条件

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top