繁体   English   中英

C ++对象创建和列表

[英]C++ Object Creation & Lists

Main Method->包含Family对象的列表。 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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM