Я упростил код как можно больше. Поэтому у меня есть два класса:Указатель на вектор не указывает
class EntityManager
{
public:
std::shared_ptr<std::vector<Entity> > getEntities()
{
return std::make_shared<std::vector<Entity> >(m_entities);
}
private:
std::vector<Entity> m_entities{};
};
и
class System
{
public:
void loadEntities(std::shared_ptr<std::vector<Entity> > entities)
{
m_entities = entities;
}
private:
std::shared_ptr<std::vector<Entity> > m_entities;
};
Сейчас в основном я хочу m_entities Системы, чтобы указать на m_entities из EntityManager.
Я сделал это:
system = System();
system.loadEntities(m_entityManager.getEntities());
Но тогда я отодвинул элемент в m_entities вектор EntityManager и этот элемент не был добавлен в m_entities вектор системы, что означает, что мой указатель не указывает ,
Где моя ошибка?
Спасибо!
Простой код хорош, но он все равно должен быть полным. Читайте снова о том, как построить [MCVE]. –
Не думайте, что вам нужен общий указатель. 'EntityManager' является очевидным владельцем списка сущностей, и он уверен, что' System' владеет 'EntityManager'. Все права собственности и срок службы должны быть известны. – user4581301
Что вы имеете в виду, должно быть известно? И что вы предлагаете использовать? – Urefeu