【发布时间】:2017-11-26 16:57:19
【问题描述】:
我无法设置我的代码,以便查看每个岛上每个人的信息。用户首先输入将有多少个岛屿。这应该会创建一定数量的 Island 类实例。每个岛屿都会有一个人口。有什么可能的方法可以为每个岛屿创建用户数量的人吗?
例如,用户可以说他们想要 3 个岛屿,这些岛屿分别有 30、40 和 50 人。我必须能够选择一个岛屿并检查一个人的状态以查看它是否为“h”。
如果有人能帮忙,那就太好了。
#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;
}
【问题讨论】:
-
SO 不是代码编写服务。
-
问题是你没有处理 addPerson() 的人口参数。话虽如此,如果它添加了多个人,是否应该将其命名为 addPerson()。
-
我希望一个人所在的岛屿成为该人的财产。为什么将“人口”作为 Person 的属性?请记住,您应该尽可能接近“现实”来建模对象,以做好 OOP。如果没有“人口”数字真的是 Person 的属性,那么不要在代码中那样建模。
-
我认为人应该被命名为 PeopleList 或类似的名称。然后拥有人口成员变量是有道理的。或者 Person 应该是 PersonList 的节点,每个人都应该有一个单独的健康状况。