C ++构造函数和向量,迭代器

时间:2017-07-20 14:57:36

标签: c++ vector constructor iterator operator-overloading

我是c ++的新手,仍在努力弄清楚事情是如何运作的。 这是我的代码。

Myclass class1("John", "Jones", 1234);
Myclass class2("Michael", "Williams", 2256);
Myclass class3("Robert", "Smith", 3568);

vector<Myclass>vec;
vec.push_back(class1);
vec.push_back(class2);
vec.push_back(class3);

Myclass O1("Michael", "Williams", 2256);
vector<Myclass>::iterator it = find(vec.begin(), vec.end(), O1); //error happens here

if(it == vec.end()){
  cout<<"object found"<<endl;
}else{
  cout<<"object not found"<<endl;
}

我希望能够检查向量中是否存在O1的对象,如果它存在,我希望它输出“对象存在”。

这是我的运营商重载

friend bool operator==(Myclass& a, Myclass& b)
{
    if(a.name == b.name && a.lastName == b.lastName && a.Id == b.Id)
        return true;
    else
        return false;
}
输出应该是:

object found

1 个答案:

答案 0 :(得分:0)

error message you provided看起来您需要将operator ==函数的参数从Myclass &更改为const Myclass &