如何在另一个类中设置多个实例?

时间:2017-11-26 16:57:20

标签: c++ list class

我无法设置代码,以便查看每个岛上每个人的信息。用户首先输入将有多少个岛屿。这应该创建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;
}

1 个答案:

答案 0 :(得分:1)

岛级可能最好持有

std::vector<Person>

人员班级不应该有人口,因为每个人都是一个人口。