c++ - 继承和构造函数| C++
问题描述
我有一个公民课程。我有另一个名为“contestant”的类,它继承自“citizen”类。我有一个将公民添加到数组的函数。我想向这个函数发送一个人,如果并在函数中添加一个检查 - 如果这个人是参赛者,我想将新的参赛者添加到数组中,否则我想添加一个新的公民。
我有一个小问题 - 我发送给函数的参数是citizen 类型,但如果我想添加一个新的参赛者,我还必须发送这个参赛者派对,但是因为我发送的是一个公民,我没有派一个派对这个函数,我找不到将参赛者添加到数组中的方法,因为我的参赛者构造函数需要派对名称。
我该如何解决这个问题?此类问题最常见的解决方案是什么?
我试过铸造,但它不起作用..我确信有一个优雅的解决方案不需要我定义两个单独的函数或将派对名称作为另一个参数发送..我只是找不到这个解决方案。
所以这是我编写的函数,我希望能够将公民作为参赛者添加到公民数组中,以防公民实际上是参赛者。
bool ElectionRound::addNewCitizen(const Citizen& citizen)
//This function add a given citizen into the system.
{
Citizen newCitizen(citizen);//copy c'tor
if (1 > citizen.getBallotNum() || citizen.getBallotNum() > bLogSize) //If the ballot Num enterd is not a a ballot which exists return false
{
cout << "The ballot num you entered for the citizen doesn't exist.\nThe citizen wasn't added to the voters note.\n";
return false;
}
if (checkIfIdExists(newCitizen.getId(), citizenNote, cLogSize)) //If the id of the new citizen already exists in the system return false
{
cout << "\nThe Id num you entered for the citizen alreay exist.\nThe citizen wasn't added to the voters note.\n";
return false;
}
else //Add citizen to the citizen list
{
if (cLogSize == cPhySize)//the citizen array is full?
{
cPhySize *= 2;
citizenNote = reallocCitizenArray(citizenNote, cLogSize, cPhySize);//make it bigger.
}
citizenNote[cLogSize] = new Citizen(newCitizen);//placement
cLogSize++;
int serialNum = newCitizen.getBallotNum();//get the ballot of the citizen.
for (int i = 0; i < bLogSize; i++)
{
if (serialNum == ballotList[i]->getSerialNum())
{
ballotList[i]->addVoter(newCitizen);//add the citizen to the correct ballot.
}
}
return true;
}
}
谢谢!
解决方案
推荐阅读
- python - Pandas Dataframe 用逗号在括号内显示结果
- php - 当phpmailer(我使用ISPConfig)从PHP发送邮件时出现ERR_TIMED_OUT
- javascript - 如何在 Twitter 导航上复制悬停效果阴影
- plantuml - PlantUML 甘特图的日历语言环境(德语)
- python - 为什么我的生成器函数没有产生正确的值?
- python - 十六进制字符串压缩程序
- object - 具有单独元数据的文本优先数据序列化
- excel - 寻找一种更简单的方法来选择范围工作表中的(部分)列(而不是整个列)。(“upperleftmostPointByName”).CurrentRegion
- java - Ghidra 的 JDK 给我错误:“找不到或加载主类 LaunchSupport”
- javascript - 尝试使用应用程序脚本在 html 中的表格中添加工作表中的数据