C++ 如何在另一个类中设置一个类的多个实例?
我在设置代码以便查看每个岛上每个人的信息时遇到问题。用户首先输入将有多少个岛。这将创建大量的Island类实例。每个岛屿都有一个人口。是否有任何可能的方法可以为每个岛屿创建用户数量 例如,用户可以说他们想要3个岛,其中30人、40人和50人。我必须能够选择一个岛屿,并检查一个人的状态,看看它是否是一个“h” 如果有人能帮忙,那就太好了C++ 如何在另一个类中设置一个类的多个实例?,c++,list,class,C++,List,Class,我在设置代码以便查看每个岛上每个人的信息时遇到问题。用户首先输入将有多少个岛。这将创建大量的Island类实例。每个岛屿都有一个人口。是否有任何可能的方法可以为每个岛屿创建用户数量 例如,用户可以说他们想要3个岛,其中30人、40人和50人。我必须能够选择一个岛屿,并检查一个人的状态,看看它是否是一个“h” 如果有人能帮忙,那就太好了 #include <iostream> #include <string> using namespace std; class Per
#include <iostream>
#include <string>
using namespace std;
class Person
{
friend class Island;
private:
char status;
int population;
public:
Person *next;
Person();
Person(char&, int&);
};
Person::Person()
{
}
Person::Person(char& s, int& p)
{
status = s;
population = p;
next = NULL;
}
class Island
{
private:
Person *root;
public:
Island();
~Island();
void addPerson(char&, int&);
void traverseList();
};
Island::Island()
{
root = new Person();
root = NULL;
}
Island::~Island()
{
delete root;
}
void Island::addPerson(char& healthstatus, int& population)
{
Person *new_civilian = new Person(healthstatus, population);
if(root == NULL)
{
root = new_civilian;
return;
}
else
{
Person *temp_person = root;
while(temp_person->next != NULL)
{
temp_person = temp_person->next;
}
temp_person->next = new_civilian;
}
}
int main()
{
int num;
Island island_catalog;
char healthstatus = 'h';
cout << "How many islands?\n";
cin >> num;
for(int i=0; i<num; i++)
{
int pop;
cout << "Island "<< i+1 << " Population: ";
cin >> pop;
island_catalog.addPerson(healthstatus, pop);
pop = 0;
}
return 0;
}
#包括
#包括
使用名称空间std;
班主任
{
友邦岛;
私人:
字符状态;
国际人口;
公众:
人*下一位;
人();
人(字符和,整数和);
};
Person::Person()
{
}
Person::Person(字符与序列、整数与整数)
{
状态=s;
人口=p;
next=NULL;
}
阶级岛
{
私人:
人*根;
公众:
岛屿();
~Island();
void addPerson(char&,int&);
void traverseList();
};
岛::岛()
{
root=新人();
root=NULL;
}
岛屿::~Island()
{
删除根;
}
空岛::addPerson(字符和健康状态、整数和人口)
{
人员*new_文职=新人员(健康状况、人口);
if(root==NULL)
{
root=new_平民;
返回;
}
其他的
{
Person*temp\u Person=root;
while(临时人员->下一步!=NULL)
{
临时人员=临时人员->下一步;
}
临时人员->下一步=新建人员;
}
}
int main()
{
int-num;
岛屿目录;
char healthstatus='h';
cout>num;
对于(inti=0;i来说,岛级最好举行
std::vector<Person>
std::vector
person类不应该有一个填充,因为每个人都是一个填充。因此不是一个代码编写服务。问题是您没有处理addPerson()的填充参数。因此,应该将其命名为addPerson()如果它添加了多个人。我会让一个人所在的岛成为这个人的财产。为什么你要将“人口”作为这个人的财产?记住,你应该尽可能接近“现实”的对象建模,以实现良好的OOP。如果没有“人口”数字确实是一个人的属性,那么不要在代码中这样建模。我认为这个人应该被命名为PeopleList或类似的东西。那么拥有人口成员变量就有一定的意义。或者,这个人应该是个人列表的节点,每个人都应该有个人的健康状态。