在我的程序中,我有一个看起来像这样的函数
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
,但我不确定我理解这意味着什么以及它的不同之处。
答案 0 :(得分:0)
容器ListCheck
包含InstalledProgram
类型的对象,但您正在搜索String^
类型的元素(c++-cli
)
您可能需要定义自定义的一元谓词并使用std::find_if