1

私は2つのベクトルを持っています

std::vector<MyObj> v;
std::vector<MyObj2> z;

ベクトル内のオブジェクトには両方ともint、ID を持つ が含まれています。見たときにv一致するidかどうかを確認したいz

それで、`std::find_if と Lambda を使用できると考えました。

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' は実行できません: 'this' 引数の型は 'const MyObj2' ですが、関数は const とマークされていません

const とマークする必要があるものとその理由がわかりません。

.hpp のようなものが必要ですか?:

MyObj2& operator= (const MyObj2&);
MyObj2& operator== (const MyObj2&); 
4

2 に答える 2