问题描述
- 小白求助C++问题,在线等
-
void StudentList::DeleteStudent(string s)
{
vector ::iterator p1;
p1=stuArr.begin();
if (stuArr.size()==0)
{
cout<<"当前列表没有元素可以删除"<
}
else
{
while (p1!=stuArr.end())
{
if(p1->GetName()=s)
{
stuArr.erase(p1);
}
}
}
}编译C:Documents and SettingsAdministrator桌面实验9实验9StudentList.cpp(27) : error C2451: conditional expression of type 'class std::basic_string,class std::allocator >' is illegal
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Error executing cl.exe.StudentList.obj - 1 error(s), 0 warning(s)
解决方案
cout末尾处的<改成;
解决方案二:
cout 末尾多一个<
if(p1->GetName()=s) 这个是==吧
if以后,若不等,p1没有指向下一个,while可能是死循环
解决方案三:
cout<<"当前列表没有元素可以删除"< 改成 cout<<"当前列表没有元素可以删除"<<endl;
解决方案四:
cout后没要有分号,第二个if判断的是“==”。
解决方案五:
p1->GetName()=s,这条语句有问题!条件判断,“=”和“==”是常出现的一个错误,如果你的s仅仅是作为一个判断常量,那么请把其声明为只读常量,然后写在左边,这样可以方便检查。
解决方案六:
参观西湖说的很对!
cout 末尾多一个<,少了一个分号;
if(p1->GetName()=s) 这个是==吧
if以后,若不等,p1没有指向下一个,while可能是死循环,要有p1++
解决方案七:
参观西湖说的很对!
cout 末尾多一个<,少了一个分号;
if(p1->GetName()=s) 这个是==吧
if以后,若不等,p1没有指向下一个,while可能是死循环,要有p1++
解决方案八:
参观西湖说的很对!+1
解决方案九:
cout 末尾多一个<,要是换行就再加一个,要不就删掉。
if(p1->GetName()=s) 这个是==吧,或者用equals进行比较,可以试试看
解决方案十:
void StudentList::DeleteStudent(string s)
{
vector ::iterator p1;//这里的vector后面应该加上 <类型名>
p1=stuArr.begin();
if (stuArr.size()==0)
{
cout<<"当前列表没有元素可以删除"; }
else
{
while (p1!=stuArr.end())
{
if(p1->GetName()=s)
{
stuArr.erase(p1);
}
else
{
iter++;
}
}
}
}