2016-10-31 3 views
-2

を通じて私はそうのような二つのマップを保存するクラスを持っています。 Databaseには、私が含まなかった多くの機能とデータ要素があります。渡すMap実装テンプレート

マップの実装をstd::mapから同じパブリックインターフェイスを持つものに変更したいとします。これはテンプレート作成に適しているようです。

通常、上部にはtemplate<class Map>と書いてあります。しかし、問題があります。

地図はこのクラス内に特化していません。たとえば、マップが必要な場合などです。テンプレートを書くことは問題ありません。私は 'データベース'をDatabase<std::map<A, B>>と定義します。しかし、私は2つの別々の地図インスタンスが必要です。

template<class Map1, class Map2>と 'Database'をDatabase<std::map<A, B>>と書く必要がありますか? テンプレート化された定義を行うには、より良い方法があります。あるいは、テンプレートはこの状況の間違ったテクニックですか?

理想的には、私はDatabase<std::map>と書くことができます。 これは可能ですか?私は以前に確認されていた

Error when pass std::map as template template argument

Error passing map to template function in C++

Passing unspecialized template as a template parameter

をしかし、これらの2は実際には2つの異なるパラメータ化を持っていることの私の問題に対処していません。

EDIT: 全体として、私はデータベース用のマップの実装を指定しようとしています。私は、データベースまたはデータベースを記述し、指定された方法でデータベースのマップ要素を実装したいと考えています。

+0

は、なぜ私はdownvotedでしたか? – Halbort

+0

ここで何をしようとしていますか?可能な解決策について多くのことを話していますが、問題については言及していません。 – tadman

+0

私はデータベース用のマップの実装を指定しようとしています。私は、データベースまたはデータベースを記述し、指定された方法でデータベースのmap要素を実装したいと考えています。 – Halbort

答えて

1

テンプレートテンプレートパラメータを検索している可能性があります。このような何か:

template <template <class...> class Map> 
class Database { 
    Map<A, B> map1; 
    Map<C, A> map2; 
}; 

Database<std::map> dbOnStdMap; 

Demo

+0

ありがとうございます。これはうまくいった。 – Halbort

関連する問題