0
我想实现一个简单的std :: find_if()函数使用(我不允许在我的作业中使用它)。“未定义的参考std :: _ Rb_tree_const_iterator”当返回迭代器
这是我实现:
template<class Iterator, class Function>
Iterator setFindIf(Iterator first, Iterator end, Function predicate) {
for (Iterator iterator = first; iterator != end; ++iterator) {
if (predicate(*iterator)) {
return iterator;
}
}
return end;
}
这是调用setFindIf()行:
if (setFindIf(orders.begin(), orders.end(),
orderCustomerHasOpenOrder(id, ordNum)) != orders.end()) {
这是错误:
undefined reference to `std::_Rb_tree_const_iterator<Order> setFindIf<std::_Rb_tree_const_iterator<Order>, orderCustomerHasOpenOrder>(std::_Rb_tree_const_iterator<Order>, std::_Rb_tree_const_iterator<Order>, orderCustomerHasOpenOrder)'
感谢帮手。
我的猜测是你已经将模板实现放在源文件中,并试图从不同的源文件中调用它。 [你不能这样做](http://stackoverflow.com/questions/495021);通常,您需要在标题中定义模板。 –