繁体   English   中英

返回迭代器时,“对std :: _ Rb_tree_const_iterator的未定义引用”

[英]“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM