При попытке найти поле "номер" внутри класса в векторе выдаёт ошибку не является именем типа
Сделал класс 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(); }