代码块在此行引发错误:
set<string,cmpi> m;
cmpi 功能是:
int cmpi(string one , string two )
{
one = toLowerCase(one);
two = toLowerCase(two);
if(two == one)
return 0;
else
if (one < two )
return -1;
else
return 1;
}
它说(错误):
type/value mismatch at argument 2 in template parameter list for 'template<class _Key, class _Compare, class _Alloc> class std::set'
我的cmpi函数的返回值是否还有其他内容?
答案 0 :(得分:2)
类型/值不匹配
事实上。
std::set
需要类型,而不是函数指针(值):
int cmpi(string one, string two);
typedef int cmpi_t(string one, string two); // the type of cmpi
std::set<string, cmpi_t*> m (&cmpi);
答案 1 :(得分:1)
第二个参数必须是一个类型。您可以为此函数创建一个类型:
struct CmpI {
bool operator()(const string &a,const string &b) { return cmpi(a,b)<0; }
};