一个好难理解的c++编译错误.

代码如下:
#include
using namespace std;
main(){
set s;
const char* p;
s.erase(p);
}
编译器发出错误:
error: invalid conversion from 'const char*' to 'std::set::key_type {aka char*}' [-fpermissive]
s.erase(p);

set s;
然后就会runtime error
然后你再在set里加个值,就能正常了

set s; 其实就是你没插入值就删除了吧

 #include<set>
#include<iterator>
#include<iostream>
using namespace std;
int main()
{
set<int>eg1;
//插入
eg1.insert(1);

编译器问题,这只能说明你这个编译器代码检查机制较好。你给p赋值可空指针再编译试试。
const char* p = NULL;

顺便问一下,你用的是什么编译器?

对了,你的set到底是 set 还是 set, 如果是前者,请改为后者。

#include
using namespace std;
int main()
{
set s;
const char* p;
s.erase(p);
}

const char* 不是 char*