Добавление 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

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]