私の新しいプロジェクトでは、データ管理モジュールを構築しています。単純なテンプレート ストレージ タイプを上位層に提供したいと考えています。
template<typename T>
class Data
{
public:
T getValue();
private:
boost::numeric::ublas::matrix<T> data;
}
私の目的は、Boost.inter プロセス アロケーターや Boost.pool アロケーター (Boost Ublas Matrix および 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;
}