Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在另一个类中设置一个类的多个实例?_C++_List_Class - Fatal编程技术网

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

C++ 如何在另一个类中设置一个类的多个实例?,c++,list,class,C++,List,Class,我在设置代码以便查看每个岛上每个人的信息时遇到问题。用户首先输入将有多少个岛。这将创建大量的Island类实例。每个岛屿都有一个人口。是否有任何可能的方法可以为每个岛屿创建用户数量 例如,用户可以说他们想要3个岛,其中30人、40人和50人。我必须能够选择一个岛屿,并检查一个人的状态,看看它是否是一个“h” 如果有人能帮忙,那就太好了 #include <iostream> #include <string> using namespace std; class Per

我在设置代码以便查看每个岛上每个人的信息时遇到问题。用户首先输入将有多少个岛。这将创建大量的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;
}
#包括
#包括
使用名称空间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或类似的东西。那么拥有人口成员变量就有一定的意义。或者,这个人应该是个人列表的节点,每个人都应该有个人的健康状态。