将共享\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