![](/img/trans.png)
[英]Segmentation fault from std::_Rb_tree_const_iterator<Type>::operator++
[英]“undefined reference to std::_Rb_tree_const_iterator” when returning iterator
我正在尝试实现一个简单的std :: find_if()之类的函数来使用(我不允许在家庭作业中使用它)。
这是我的实现:
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)'
感谢您的帮助。
看起来您在标头中声明了模板:
template<class Iterator, class Function>
Iterator setFindIf(Iterator first, Iterator end, Function predicate);
然后将实现放入.cpp文件中,并从其他.cpp文件中调用它。 它不适用于模板。
迈克首先给出了答案,但他发表了评论,所以我还是张贴了这个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.