У меня 2 векторовC++ 11 поиска в вектор объектов
std::vector<MyObj> v;
std::vector<MyObj2> z;
Объекты в векторах и содержат int
, который имеет идентификатор. Я хочу видеть, если при поиске через v
он имеет в z
согласующего id
Так я думал, что я мог бы использовать `зОго :: find_if и лямбду.
for (int i=0; i < _z.size(); i++)
{
MyObj2 _g = _z.at(i);
auto iter = std::find_if(v.begin(), v.end(), [this](MyObj o)
{
if (o.getID() == _g.getID())
{
std::cout << "we have a match" << std::endl;
}
else
{
std::cout << "we DO NOT have a match" << std::endl;
}
});
}
, но я получаю сообщение об ошибке, которое я не понимаю.
43: функция члена «GetId» не жизнеспособно: «этот» аргумент имеет тип «константный MyObj2», но функция не отмечен сопзИ
Я не понимаю, что должно быть обозначена сопзЬ и почему?
двутавровой нуждаясь что-то вроде в моей .hpp ?:
MyObj2& operator= (const MyObj2&);
MyObj2& operator== (const MyObj2&);
Ну, 'operator ==' должен, вероятно, возвращать 'bool', и это нормально, если он будет' const' в любом случае. – chris
Попробуйте пометить 'getID()' as 'const' – Cornstalks
@chris поэтому измените:' MyObj2 & operator == (const MyObj2 &); 'to' bool operator == (const MyObj2 &); '? – Jason