我尽可能简化了代码。 所以我有两个类:指向矢量的指针不指向
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指向的EntityManager的m_entities。
我这样做:
system = System();
system.loadEntities(m_entityManager.getEntities());
但后来我推开一个元素的EntityManager的m_entities载体和系统的m_entities载体不添加这个元素,这意味着我的指针不指向。
我的错误在哪里?
谢谢!
简单的代码很好,但它仍然必须是完整的。再次阅读如何构建[MCVE]。 –
不要以为你需要一个共享指针。 'EntityManager'是实体列表的显而易见的所有者,它看起来像'System'拥有'EntityManager'。所有的所有权和生命期应该是已知的。 – user4581301
你应该知道什么意思?你有什么建议使用? – Urefeu