代码如下:
#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*