将共享\u ptr添加到我的地图会引发读取访问冲突 所以我正在努力构建一个C++游戏引擎,只是为了学习的目的。我试图遵循实体组件系统,但在向实体添加组件时遇到问题

将共享\u ptr添加到我的地图会引发读取访问冲突 所以我正在努力构建一个C++游戏引擎,只是为了学习的目的。我试图遵循实体组件系统,但在向实体添加组件时遇到问题,c++,entity-component-system,C++,Entity Component System,在我的实体类中,我希望将该实体的所有组件保存在:std::map components 添加组件时,实体类的.h文件中有此方法: template<typename T, typename... TArgs> std::shared_ptr<T> addComponent(TArgs&&... mArgs) { std::shared_ptr<T> component(new T(std::forward<TArgs>(m

在我的实体类中,我希望将该实体的所有组件保存在:
std::map components

添加组件时,实体类的.h文件中有此方法:

template<typename T, typename... TArgs> 
std::shared_ptr<T> addComponent(TArgs&&... mArgs) {
    std::shared_ptr<T> component(new T(std::forward<TArgs>(mArgs)...)); 
    component->entity = this;
    component->init();

    // This is where the error is being thrown 
    components.emplace(type_index(typeid(*component)), component); 
    return component;
}

您的type_索引是否在向量大小内?您的代码中有一个bug。不一定在所示代码的任何部分中。如果没有其他人可以用来重现您的崩溃的错误,那么没有人能够帮助您在代码中的某个地方找到错误。@Pi-您能解释一下在这里看到向量的位置,或者任何有用的信息吗?这里没有向量可以找到,在任何地方,至少在所示代码的任何地方都没有。仅仅因为某个东西被命名为“type_index”,并不意味着它包含了一个向量。@Pi你是什么意思?@SamVarshavchik我在尝试它。显然是错的;)
    Unhandled exception thrown: read access violation.
    **std::forward<std::_Tree_node<std::pair<std::type_index const ,std::shared_ptr<Component> >,void *> * &>**(...) returned 0x4. occurred