我儘可能簡化了代碼。 所以我有兩個類:指向矢量的指針不指向
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