[英]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.