#include <iostream>
#include <vector>
#include <memory>
struct Entity {};
using Entities = std::vector<Entity>;
class EntityManager
{
public:
EntityManager()
: m_entities(std::make_shared<Entities>())
{
}
std::shared_ptr<Entities> getEntities()
{
return m_entities;
}
private:
std::shared_ptr<Entities> m_entities;
};
class System
{
public:
void loadEntities(std::shared_ptr<Entities> entities)
{
m_entities = entities;
}
private:
std::shared_ptr<Entities> m_entities;
};
int main()
{
EntityManager em;
System sys;
sys.loadEntities(em.getEntities());
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWVtb3J5PgoKc3RydWN0IEVudGl0eSB7fTsKCnVzaW5nIEVudGl0aWVzID0gc3RkOjp2ZWN0b3I8RW50aXR5PjsKCmNsYXNzIEVudGl0eU1hbmFnZXIKewpwdWJsaWM6CiAgICBFbnRpdHlNYW5hZ2VyKCkKICAgICAgICA6IG1fZW50aXRpZXMoc3RkOjptYWtlX3NoYXJlZDxFbnRpdGllcz4oKSkKICAgIHsKICAgIH0KICAgIAogICAgc3RkOjpzaGFyZWRfcHRyPEVudGl0aWVzPiBnZXRFbnRpdGllcygpCiAgICB7CiAgICAgICAgcmV0dXJuIG1fZW50aXRpZXM7CiAgICB9CiAgICAKcHJpdmF0ZToKICAgIHN0ZDo6c2hhcmVkX3B0cjxFbnRpdGllcz4gbV9lbnRpdGllczsKfTsKCmNsYXNzIFN5c3RlbQp7CnB1YmxpYzoKICAgIHZvaWQgbG9hZEVudGl0aWVzKHN0ZDo6c2hhcmVkX3B0cjxFbnRpdGllcz4gZW50aXRpZXMpCiAgICB7CiAgICAgICAgbV9lbnRpdGllcyA9IGVudGl0aWVzOwogICAgfQogICAgCnByaXZhdGU6CiAgICBzdGQ6OnNoYXJlZF9wdHI8RW50aXRpZXM+IG1fZW50aXRpZXM7Cn07CgppbnQgbWFpbigpCnsKICAgIEVudGl0eU1hbmFnZXIgZW07CiAgICBTeXN0ZW0gc3lzOwogICAgc3lzLmxvYWRFbnRpdGllcyhlbS5nZXRFbnRpdGllcygpKTsKfQo=