Domanda

Nel mio nuovo progetto Sto costruendo un data management module.I vuole dare un semplice tipo di archiviazione modello per strati superiori come

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

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

Il mio obiettivo è, di cambiare allocatore di dati con alcuni ripartitori diversi, come Boost.inter processo allocatore o Boost.pool allocatore (Boost uBLAS Matrix e classi vettore prende allocatore come parametro di template) .E dare solo una singola classe e fabbrica metodo per creare adeguate allocatore sotto cover.A classe base virtuale potrebbe essere dolce ma io non poteva gestire come usarlo con templates.What tipo di modelli o soluzioni progettuali offrite?

Modifica:

userò boost.pool e boost.shared_memory_allocator.Briefly voglio avere classi differenti con diversa ripartizione strategies.But mio punto è parti superiori del programma dovrebbero avere alcuna conoscenza di sfida it.Real per me è quello di raccogliere modello diverso corsi con classi di base identici.

Modifica: Per chi vuole utilizzare classe Matrix con allocatore personalizzato.

è in questo modo:

 using boost::numeric::ublas;

    template<typename T, class Allocator = boost::pool_allocator<T>>
    class
    {      
      public:
      matrix<T, row_major, std::vector<T,Allocator>> mData;
    }
È stato utile?

Soluzione

Non è chiaro ciò che si vuole, ma come un salto nel buio, è il seguente utile?

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

Altri suggerimenti

Stai cercando di scambiare ripartitori in fase di compilazione in base al tipo? Avreste bisogno di un modello if-else e alcune definizioni di classe allocatore (modello).

Se si desidera ripartitori di runtime, quindi è più facile:. Che ci si mette la classe di base (interfaccia di classe definizione) nel template e passare sottoclassi appropriate in base a qualsiasi condizione è necessario soddisfare

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top