Добавление shared_ptr к моей карте приводит к нарушению прав чтения

Поэтому я работаю над созданием игрового движка на C++, просто для целей обучения. Я пытаюсь следовать системе компонентов сущностей, и у меня возникают проблемы при добавлении компонентов в мою сущность.

В моем классе Entity я хочу хранить все компоненты этого объекта в: std::map<type_index, std::shared_ptr<Component>> components;

Когда я добавляю компонент, у меня есть этот метод в.h файле моего класса Entity:

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;
}

в том же методе я также сделал несколько разных вещей, таких как попытка добавить компоненты, такие как components[std::type_index(typeid(*component))] = component; вместо того, чтобы использовать emplace, а затем я также пытался std::move компонент в карту.

Моя точная ошибка:

    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

0 ответов

Другие вопросы по тегам