我正在使用vs2012并遇到同样的问题。下面是我的示例源代码。
#include "stdafx.h"
#include "iostream"
#include "list"
#include "algorithm"
#include "xutility"
using namespace std;
typedef struct Student{
string name;
int age;
int operator==(list<Student>::iterator itr)
{
return (!strcmp(itr->name.c_str(),this->name.c_str()));
}
}SStudent;
int _tmain(int argc, _TCHAR* argv[])
{
list<SStudent> myList;
SStudent temp1;
temp1.age = 10;
temp1.name = "aaaa";
myList.push_back(temp1);
list<SStudent>::iterator itr;
itr = std::find(myList.begin(), myList.end(), "aaaa");
return 0;
}
这是错误: 错误1错误C2678:二进制'==':找不到哪个运算符带有'Student'类型的左手操作数(或者没有可接受的转换)c:\ program files(x86)\ microsoft visual studio 11.0 \ _ vc \包括\ xutility 3186