マップをテンプレートパラメータとして受け取るクラスを作成しようとしています。特に、std::mapとboost::ptr_mapを取得できる必要があります。現在私はこれを試しています:
template <template<typename, typename> class MAP, typename KEYTYPE, typename DATATYPE>
class RestrictedMapBase
{
/* bunch of methods ... */
}
このクラスは、他の2つのクラスに継承されています。1つはstd :: map用で、もう1つはboost::ptr_map用です。
template <typename KEYTYPE, typename DATATYPE>
class RestrictedMap: public RestrictedMapBase<std::map, KEYTYPE, DATATYPE>
{
/* Bunch of methods ... */
};
template <typename KEYTYPE, typename DATATYPE>
class RestrictedPointerMap: public RestrictedMapBase<boost::ptr_map, KEYTYPE, DATATYPE>
{
/* Bunch of methods ... */
};
しかし、コンパイル時に次のエラーが発生します。
RestrictedMap.h(166):エラーC3201:クラステンプレート'std ::map'のテンプレートパラメータリストがテンプレートパラメータ'MAP'のテンプレートパラメータリストと一致しませんRestrictedMap.h(183):クラステンプレートのインスタンス化への参照を参照してください' STLUtils ::RestrictedMap'がコンパイルされています
RestrictedMap.h(186):エラーC3201:クラステンプレート'boost ::ptr_map'のテンプレートパラメータリストがテンプレートパラメータ'MAP'のテンプレートパラメータリストと一致しませんRestrictedMap.h(203):クラステンプレートのインスタンス化への参照を参照してください' STLUtils ::RestrictedPointerMap'がコンパイルされています
誰かが私が間違っていることの正しい方向に私を向けることができますか?ありがとう。