#include <iostream>
#include <vector>
#include <memory>
#include <string>
using namespace std;
class Human
{
public:
Human() : t(0.0), m(0.0)
{
cout << "con Human" << endl;
}
~Human()
{
cout << "des Human" << endl;
}
public:
double t;
double m;
};
class HuamanList
{
public:
HuamanList() : m_humanList(new vector<shared_ptr<Human>>)
{
cout << "con HuamanList" << endl;
}
~HuamanList()
{
cout << "des HuamanList" << endl;
}
public:
void addHuman(shared_ptr<Human> human)
{
m_humanList->push_back(human);
}
void show()
{
for(auto iter = m_humanList->begin();iter != m_humanList->end();iter++)
{
cout << (*iter)->t <<","<< (*iter)->m <<endl;
}
}
private:
shared_ptr<vector<shared_ptr<Human>>> m_humanList;
};
class Target
{
public:
Target() : list(new HuamanList), name("myname")
{
cout << "con Target" << endl;
}
~Target()
{
cout << "des Target" << endl;
}
public:
string name;
shared_ptr<HuamanList> list;
};
class TargetList
{
public:
TargetList() : m_TargetList(new vector<shared_ptr<Target>>)
{
cout << "con TargetList" << endl;
}
~TargetList()
{
cout << "des TargetList" << endl;
}
public:
void addTarget(shared_ptr<Target> Target)
{
m_TargetList->push_back(Target);
}
void show()
{
for(auto iter = m_TargetList->begin();iter != m_TargetList->end();iter++)
{
cout << (*iter)->name << endl;
}
}
private:
shared_ptr<vector<shared_ptr<Target>>> m_TargetList;
};
int main()
{
shared_ptr<TargetList> pTargetList(new TargetList);
shared_ptr<Target> pTarget1(new Target);
shared_ptr<Human> newHuman(new Human);
newHuman->t = 1.0;
newHuman->m = 1.0;
shared_ptr<Human> newHuman2(new Human);
newHuman2->t = 2.0;
newHuman2->m = 2.0;
shared_ptr<Human> newHuman3(new Human);
newHuman3->t = 3.0;
newHuman3->m = 3.0;
pTarget1->list->addHuman(newHuman);
pTarget1->list->addHuman(newHuman2);
pTarget1->list->addHuman(newHuman3);
pTarget1->name = "missile";
pTargetList->addTarget(pTarget1);
pTarget1->list->show();
shared_ptr<Target> pTarget2(new Target);
shared_ptr<Human> newHuman4(new Human);
newHuman4->t = 4.0;
newHuman4->m = 4.0;
shared_ptr<Human> newHuman5(new Human);
newHuman5->t = 5.0;
newHuman5->m = 5.0;
shared_ptr<Human> newHuman6(new Human);
newHuman6->t = 6.0;
newHuman6->m = 6.0;
pTarget2->list->addHuman(newHuman4);
pTarget2->list->addHuman(newHuman5);
pTarget2->list->addHuman(newHuman6);
pTarget2->name = "missile2";
pTargetList->addTarget(pTarget2);
pTarget2->list->show();
pTargetList->show();
return 0;
}