我做了一个班级Solder,现在这个士兵必须从班级中添加和解雇Group。编译器不会对 add 方法发誓,但是当涉及到解雇时,您必须首先找到指向它的指针。在查找时,编译器会输出错误член "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;
}
};
你可能想要类似的东西
您只需要将相应的成员函数声明为
const:顺便说一句,目前尚不清楚你为什么这样做
&cm- 你可以