我正在尝试创建一个将地图作为模板参数的类。特别是它应该能够采用 std::map 和 boost::ptr_map。目前我正在尝试这个:
template <template<typename, typename> class MAP, typename KEYTYPE, typename DATATYPE>
class RestrictedMapBase
{
/* bunch of methods ... */
}
这个类被另外两个类继承,一个用于std::map,一个用于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' 正在编译
谁能指出我做错了什么的正确方向?谢谢。