C++对象创建和列表

C++ Object Creation & Lists

本文关键字:列表 创建 对象 C++      更新时间:2023-10-16

Main Method -> 包含 Family 对象的列表。族 -> 包含 Person 对象的列表。

创建 Family 对象

后,如何强制它为每个新的 Family 实例创建一个新的"Person"对象列表?

目前,主列表中的所有 Family 对象都共享一个 Person 链表。

将不胜感激您的想法。我必须使用链表的链表...

#include <iostream>
#include <list>
using namespace std;
class Family
{
private:
   int family_id;
public:
   int getFamilyId();
   void createPerson(int id, string name);
   void readPersonName();
   Family(int id);
   ~Family();
};
list <Person> people;
Family::Family(int id)
{
   family_id = id;
}
Family::~Family(void){};

int Family::getFamilyId()
{
   return family_id;
};

void Family::createPerson(int id, string name)
{
   people.push_back(Person(id, name));
};

void Family::readPersonName()
{
   list<Person>::iterator itr;
   for(itr = people.begin(); itr != people.end(); itr++)
      cout << itr->get_person_name() << 'n';
};

"创建 Family 对象后,如何强制它为每个新的 Family 实例创建一个新的'Person' 对象列表?"

为什么不简单地将该列表声明为类成员?

class Family {
private:
   int family_id;
public:
   int getFamilyId();
   void createPerson(int id, string name);
   void readPersonName();
   Family(int id);
   ~Family();
private:
   list <Person> people; // <<<<<
};

"我必须使用链表的链表..."

我不完全理解你问题的这一部分。您是否还需要为所有人保留一份全球名单?

在这种情况下,您应该使用人员的共享对象列表:

class Family {
// ....
   void createPerson(int id, string name) {
        people.push_back(new Person(id,name));
        allPeople.push_back(people.back());
   }
private:
   list <shared_ptr<Person>> people;
};
list<shared_ptr<Person>> allPeaople;