Как создать динамический компоновщик?

Сейчас попытаюсь все подробно объяснить, мне нужно создать иерархию воинской части. Гдето по вод такой схеме. Каждый элемент этой иерархии это объект со своими значениями (командир части, звание командира, или название части).И мне нужно создать компоновщик, который будет объединять их в иерархию(Армия -> Корпус и тд.). Я сделал код, который это делает, но я прописываю зависимости вручную. А мне нужно через консоль создавать объекты (армия, корпус) и добавлять их в иерархию.введите сюда описание изображения


Ответы (1 шт):

Автор решения: Микуляк
#include <math.h>
#include <iostream>
#include <string>
#include <windows.h>
#include <vector>
#include <clocale>
#include <stdlib.h>
#include <list>
using namespace std;
class Component {
public:
    virtual void add() {}
    virtual void draw() {}
    string name;
};

class Branch : public Component {
public:
    void draw()
    {
        cout << name << endl;
    }
};

class Composite : public Branch {
    vector<Component*> childs;

public:
    void add(Component* g)
    {
        childs.push_back(g);
    }
    void draw()
    {
        cout << name << endl;
        for (int i = 0; i < childs.size(); ++i) {
           childs[i]->draw();
        }
    }
};
Composite corpus;
Composite platoon, platoon1;
Branch branch, branch1;
void add_branch()
{
}
int main()
{
    corpus.name = "Corpus_1";
    platoon.name = "Platton_1";
    platoon1.name = "Platton_1";
    corpus.add(&platoon1);
    corpus.add(&platoon);
    platoon1.add(&branch);
    branch.name = "Branch_1";
    corpus.draw();
}
→ Ссылка