Pergunta

Em meu novo projeto que estou construindo uma gestão de dados module.I quer dar um tipo de armazenamento de modelo simples para as camadas superiores como

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

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

O meu objectivo é, a mudança alocador de dados com alguns alocadores diferentes como Boost.inter alocador processo ou Boost.pool alocador (Aumente Ublas Matrix e aulas vetor leva alocador como um parâmetro do modelo) .E dar apenas uma única classe e Fábrica método para criar alocador apropriado sob a classe base virtual cover.A poderia ser doce, mas eu não poderia lidar com como usá-lo com templates.What tipo de padrões de projeto ou soluções que você oferece?

Editar:

Vou usar boost.pool e boost.shared_memory_allocator.Briefly eu quero ter diferentes classes com repartição diferente strategies.But meu ponto é partes superiores do programa deve ter nenhum conhecimento sobre desafio it.Real para mim é coletar modelo diferente classes com um classes base idêntica.

Edit: Para quem quiser usar classe matriz com alocador personalizado.

é assim:

 using boost::numeric::ublas;

    template<typename T, class Allocator = boost::pool_allocator<T>>
    class
    {      
      public:
      matrix<T, row_major, std::vector<T,Allocator>> mData;
    }
Foi útil?

Solução

Não está claro o que você quer, mas como um tiro no escuro, é o seguinte útil?

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;
}

Outras dicas

Você está tentando alocadores de swap em tempo de compilação com base no tipo? Você precisa de um modelo if-else e alguns classe alocador definições (modelo).

Se você quiser alocadores de tempo de execução, então é mais fácil:. Você colocaria a classe base (classe definição de interface) no modelo e passar subclasses apropriadas com base em qualquer condição que você precisa para cumprir

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top