繁体   English   中英

重载的电话*** <unresolved overloaded function type> )&#39;不明确

[英]call of overloaded *** <unresolved overloaded function type>)' is ambiguous

请帮助我如何解决此错误

template <typename Inputlterator, typename Outputlterator, typename Predicate>
Outputlterator copy_if( Inputlterator begin, Inputlterator end, Outputlterator destBegin, Predicate p) 
{
    return remove_copy_if(begin, end,destBegin, not1( ptr_fun( p ) ) );
}
template <class T> bool is_not_3( T val ) {
    return val != 3;
}
void foo( ) {
    vector<int> v;
    v.push_back( 1 );
    v.push_back( 2 );
    v.push_back( 3 );
    copy_if( v.begin( ), v.end( ), ostream_iterator<int>( cout, " " ), is_not_3<int> );
}

我得到一个错误,说:错误:重载的“ copy_if(std :: vector :: iterator,std :: vector :: iterator,std :: ostream_iterator,)”的调用是模棱两可的

重写此语句

copy_if( v.begin( ), v.end( ), ostream_iterator<int>( cout, " " ), //...);

喜欢

::copy_if( v.begin( ), v.end( ), ostream_iterator<int>( cout, " " ), //...);
^^^

否则,您的函数将与标准算法std::copy_if冲突

由于您使用了指令而引起的问题

using namespace std;

请注意,您的代码段中的函数调用在语法上并未完成。 您忘记指定最后一个参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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