今天在开发中遇到了下面这个问题。
error C2664: “bool InUse(char *)”: 无法将参数 1 从“const char *”转换为“char *”
函数定义的参数类型是char *,实际传入函数的是const char * 类型。
代码如下:
#include <iostream>
#include <set>
using namespace std;
struct ltstr
{
bool operator()(const char* s1, const char* s2) const
{
return strcmp(s1, s2) < 0;
}
};
typedef set<char *, ltstr> CPackageSet;
CPackageSet g_setUsePackage;
bool InUse(char *name)
{
return (g_setUsePackage.find(name) != g_setUsePackage.end());
}
int main()
{
const char * s = "sdfsd";
InUse(s);//提示有错误
char * t = "asdf";
size_t len = strlen(t);
cout << len << endl;
return 0;
}
如果参数类型是const char *,实际传入的是char * 类型,经过测试是没有问题的。
网友评论