我在标题中有一个 Hashmap 类
template <typename K, typename M, typename H = std::hash<K>>
class HashMap {
public:
template <class Iterator>
HashMap(const Iterator& begin, const Iterator& end);
};
如何在 cpp 文件中声明它?
我尝试过:
template <class <typename K, typename M, typename H> Iterator>
HashMap<K, M, H>::HashMap(const Iterator& begin, const Iterator& end)
它不起作用。谢谢。
最佳答案
您需要类和构造函数的单独模板,如下所示:
template <typename K, typename M, typename H>
template <class Iterator>
HashMap<K,M,H>::HashMap(const Iterator& begin, const Iterator& end) {
// ...
}
请注意,构造函数的越界定义不能指定默认模板参数。
此外,您的问题表明您想将其放入 .cpp
文件中,但您不应该这样做。模板应始终位于头文件中。
关于c++ - 使用迭代器的模板类的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62399437/