При попытке найти поле "номер" внутри класса в векторе выдаёт ошибку не является именем типа

Сделал класс Solder, теперь этого солдата надо добавить и уволить из классаGroup. На метод добавления компилятор не ругается, но когда дело доходит до увольнения, то надо в начале найти указатель на него. И во время нахождения, компилятор выводит ошибку член "Group::solders" не является именем типа. Как от неё избавиться? Классы приведены ниже:

class Group 
{
private:
    std::vector<Solder> solders;
    string* name;
    int countWin;
    int countLose;
public:
    //конструктор
    Group(string name_in = "Неизвестно")
    {
        name = new string(name_in);
        countWin = 0;
        countLose = 0;
    }
    //деструктор
    ~Group()
    {
        cout << "Удаление из памяти " << *this->name << endl;
        solders.clear();
        delete name;
    }

    void addSolder(string name, int number)
    {
        Solder newSolder(name, number);
        solders.push_back(newSolder);
    }

    void firedSolder(int number)
    {
        std::vector<Solder>::iterator it;
        // Пытаюсь найти место где находится солдат с нужным номером в векторе
        it = find_if(solders.begin(),
            solders.end(),
            [&cm = number]
        (const solders& m) -> bool { return cm == m; }); //Ошибку тут показывает
        
        solders.erase(it);
    }
};
class Solder
{
private:
    string* name;
    int number;

public:
    //конструктор
    Solder(string name_in = "Неизвестно", int number_in = 0)
    {
        name = new string(name_in);
        number = number_in;
    }
    //деструктор
    ~Solder()
    {
        cout << "Удаление из памяти " << *this->name << endl;
        delete name;
    }
    //возвращаем номер солдата
    int getNumber()
    {
        return number;
    }
};

Ответы (1 шт):

Автор решения: Harry

Вы, наверное, хотели что-то вроде

[&cm = number](const Solder& m)->bool{ return cm == m.getNumber(); }

Только надо еще объявить соответствующую функцию-член как const:

int getNumber() const

Кстати, непонятно, зачем вам это &cm - можно просто

[number](const Solder& m)->bool{ return number == m.getNumber(); }
→ Ссылка