好的,所以我们知道STL中的功能
std::fill(boolContainer.begin(), boolContainer.end(), false);
我正在使用一个也适用于容器的方法开发一个类,我意识到我也可以在上面的例子中模板化它。非模板化的版本是这样的:
class SomeClass {
public:
// ...
int containerMethod(std::vector<int> &v);
// ...
private:
// ...
};
我的目标是将其改为:
class SomeClass {
public:
// ...
template <class InputIterator>
int containerMethod(const InputIterator &begin, const InputIterator &end);
// ...
private:
// ...
};
但是我在制定实施细节方面遇到了麻烦:
template <class Iter> int SomeClass::containerMethod
(const Iter &begin, const Iter&end) {
// Here I need to instantiate an iterator for the container.
Iter iter;
for (iter = begin; iter != end; ++iter) {
// This does not seem to work.
}
return 0;
}
所以问题是如何根据方法的模板化参数正确实例化模板化迭代器?请注意,我只需要一个输入迭代器。
答案 0 :(得分:5)
您的测试用例不完整,所以我必须咨询我的水晶球。
您已将模板定义放在源代码文件中,而它应该位于头文件中。
请参阅:Why can templates only be implemented in the header file?