std :: find在xutility C ++中遇到问题

时间:2014-04-27 14:47:11

标签: c++ find c++-cli std

在我的程序中,我有一个看起来像这样的函数

bool InstalledProgram::IsProgInList(String^ ProgramName, list<InstalledProgram> ListCheck) {
if (find(ListCheck.begin(), ListCheck.end(), ProgramName) != ListCheck.end()) {
    return true;
}
else {
    return false;
}

}

当我去调试整个事情时我得到了

 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xutility(3045) : see reference to function template instantiation '_InIt std::_Find<_InIt,_Ty>(_InIt,_InIt,const _Ty &,std::false_type)' being compiled
    with
      [
          _InIt=std::_List_unchecked_iterator<std::_List_val<std::_List_simple_types<InstalledProgram>>>,  
          _Ty=System::String ^
     ]

它没有告诉我有关我的实际代码文件的任何信息,但这是我使用find的唯一地方,所以它必须在这里。我花了一段时间试图解决这个现在好运。任何人都可以看到问题吗?我知道ProgramName应该是String^ const &_Val,但我不确定我理解这意味着什么以及它的不同之处。

1 个答案:

答案 0 :(得分:0)

容器ListCheck包含InstalledProgram类型的对象,但您正在搜索String^类型的元素(c++-cli

您可能需要定义自定义的一元谓词并使用std::find_if