我有这些课程:
class PC
{
public:
PC(string in_operatingSystem,int in_ramSlots,int in_pcieSlots,int in_totalRamSlots, int in_gbPerRam, int in_cpu, int in_ssd, int in_cost);
virtual void Print() = 0;
virtual void Upgrade() = 0;
protected:
string operatingSystem;
int ramSlots,pcieSlots,totalRamSlots,gbPerRam;
int cpu,ssd;
int cost;
};
class HomePC: public PC
{
public:
HomePC(string in_operatingSystem,int in_ramSlots,int in_pcieSlots,int in_totalRamSlots, int in_gbPerRam, int in_cpu, int in_ssd, int in_cost, string in_model);
void Print();
void Upgrade(){};
private:
string model;
};
并且我将内容保存到矢量中,如下所示:
PCList.push_back(new HomePC("MacOS",2,0,1,4,2,256,800,Model));
我正在尝试找到一种方法来在向量中找到特定型号(例如UserPC),并从列表中删除该PC。
您可以为model
添加吸气剂
class HomePC: public PC
{
public:
HomePC(string in_operatingSystem,int in_ramSlots,int in_pcieSlots,int in_totalRamSlots, int in_gbPerRam, int in_cpu, int in_ssd, int in_cost, string in_model);
void Print();
void Upgrade(){};
std::string getModel() const { return model; }
private:
string model;
};
并动态转换每个元素:
for (auto pcIt = PCList.begin(); pc != PCList.end(); ++pc) {
auto *homePc = dynamic_cast<HomePC *>(*pcIt);
if (homePc && homePc->getModel() == "UserPC") {
PCList.erase(pcIt);
break;
}
}