簡體   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